Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Oracle SQL:Trích xuất tuần trong năm từ ngày đưa ra kết quả ngẫu nhiên

[TL; DR] Chỉ cần sử dụng:TO_CHAR( tbl.col, 'IW' )

Bạn có nhiều vấn đề:

  1. Bạn đang gọi TO_DATE( string, format_model ) với DATE (không phải VARCHAR2 ) khiến Oracle thực hiện chuyển đổi ngầm định đối với DATE thành VARCHAR2 sử dụng NLS_DATE_FORMAT tham số phiên làm mô hình định dạng để bạn có thể chuyển đổi nó trở lại DATE . Vì vậy, bạn đang làm một cách hiệu quả:

    TO_CHAR(
      TO_DATE(
        TO_CHAR(
          tbl.col,
          ( SELECT VALUE FROM NLS_SESSION_PARAMETERS WHERE PARAMETER = 'NLS_DATE_FORMAT' )
        ),
        'YYYY/MM/DD'
      ),
      'IW'
    )
    

    Không làm điều này , chỉ cần sử dụng:

    TO_CHAR( tbl.col, 'IW' )
    

    Nếu bạn làm điều đó thì các vấn đề sau không liên quan.

  2. Như RealCheeseLord đã chỉ ra, vị trí của năm và ngày trong mô hình định dạng của bạn bị đảo ngược; và
  3. Bạn đang sử dụng YYYY cho mô hình định dạng năm để tất cả các năm sẽ ở vào thế kỷ thứ nhất sau Công nguyên.

    Ví dụ :

    SELECT TO_CHAR( TO_DATE( '19-Jun-17', 'YYYY/MM/DD' ), 'YYYY-MM-DD' ) AS dt
    FROM   DUAL
    

    Đầu ra :

    DT
    ----------
    0019-06-17
    

    Nếu bạn không sửa chuyển đổi chuỗi ngầm định thì bạn có thể muốn:

    TO_CHAR(TO_DATE(tbl.col,'DD-MON-YY'),'IW') AS week
    

    hoặc (tùy thuộc vào việc bạn muốn năm 99 là 1999 hay 2099):

    TO_CHAR(TO_DATE(tbl.col,'DD-MON-RR'),'IW') AS week
    
  4. Bạn đang sử dụng MM mô hình định dạng cho MON dữ liệu được định dạng - đây không nhất thiết là vấn đề vì MM cũng khớp với MONMONTH nhưng bạn có thể nên sử dụng đúng mô hình.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Khắc phục hạn chế về chèn hàng loạt qua liên kết cơ sở dữ liệu

  2. oracle kết nối bởi nhiều phụ huynh

  3. làm cách nào để đọc tệp cục bộ trong SQL Developer?

  4. Khóa học về lỗi điều chỉnh hiệu suất Oracle PL / SQL

  5. pivot table Oracle - cách thay đổi các mục hàng thành cột