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

Câu lệnh truy vấn Oracle SQL và các điều kiện với dấu thời gian và ngày ISO

Dựa trên câu hỏi trước đó , thật hấp dẫn để coi cả T và Z là các ký tự ký tự và về cơ bản bỏ qua chúng, bằng cách sử dụng:

to_timestamp_tz('2014-01-28T12:00:0Z', 'YYYY-MM-DD"T"HH24:MI:SS"Z"')

Nếu bạn sử dụng to_timestamp_tz() mà không chỉ định múi giờ thì múi giờ đó sẽ mặc định thành múi giờ phiên của bạn, như to_timestamp(); do đó, một thời gian được chỉ định trong Zulu / UTC sẽ làm mất thông tin vùng đó:

alter session set time_zone = 'America/New_York';
select to_timestamp_tz('2014-01-28T12:00:0Z',
  'YYYY-MM-DD"T"HH24:MI:SS"Z"') from dual;

TO_TIMESTAMP_TZ('2014-01-28T12:00:0Z','YYYY-MM-DD"T"HH24:MI:SS"Z"')
-------------------------------------------------------------------
28-JAN-14 12.00.00.000000000 AMERICA/NEW_YORK                       

Giờ 12:00 của bạn được hiển thị là 12:00 ở New York, không phải 12:00 UTC.

Một chuyển đổi an toàn hơn, giả sử các giá trị của bạn luôn được cho là đại diện cho UTC, là chỉ định múi giờ một cách rõ ràng với the from_tz() chức năng :

WHERE MODIFICATION_DATE >= from_tz(to_timestamp('2014-01-28T12:00:0Z',
  'YYYY-MM-DD"T"HH24:MI:SS"Z"'), 'UTC')

Điều này tính đúng giờ UTC:

alter session set time_zone = 'America/New_York';
select from_tz(to_timestamp('2014-01-28T12:00:0Z',
  'YYYY-MM-DD"T"HH24:MI:SS"Z"'), 'UTC') from dual;

FROM_TZ(TO_TIMESTAMP('2014-01-28T12:00:0Z','YYYY-MM-DD"T"HH24:MI:SS"Z"'),'UTC')
-------------------------------------------------------------------------------
28-JAN-14 12.00.00.000000000 UTC                                                


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Các hành vi kỳ lạ với con trỏ lồng nhau trong oracle

  2. Làm thế nào để khôi phục dữ liệu trong bảng Oracle?

  3. Làm cách nào để nhập bộ sao lưu Oracle 11g RMAN trên máy chủ cơ sở dữ liệu mới?

  4. Cách viết một ứng dụng .Net hoạt động với cả SqlServer và Oracle (hiện nay System.Data.OracleClient không được dùng nữa)

  5. Xây dựng một truy vấn động trong C # (SQL Injection Attack)