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

Làm thế nào để chuyển đổi chuỗi thành dấu thời gian mà không có múi giờ

Biểu diễn chuỗi của timestamp (=timestamp without time zone ) tùy thuộc vào cài đặt ngôn ngữ của bạn. Do đó, để tránh sự mơ hồ dẫn đến lỗi dữ liệu hoặc Postgres đưa ra một ngoại lệ, bạn có hai lựa chọn:

1.) Sử dụng định dạng ISO 8601 , hoạt động tương tự với bất kỳ ngôn ngữ hoặc DateStyle cài đặt:

'2013-08-20 14:52:49'

Bạn có thể phải ép kiểu chuỗi theo nghĩa đen một cách rõ ràng trong đó kiểu dữ liệu không thể được lấy từ ngữ cảnh, tùy thuộc vào trường hợp sử dụng:

'2013-08-20 14:52:49'::timestamp

2.) Chuyển đổi chuỗi thành timestamp sử dụng to_timestamp() với một mẫu mẫu phù hợp:

to_timestamp('20/8/2013 14:52:49', 'DD/MM/YYYY hh24:mi:ss')

Điều này trả về timestamptz , giả sử cài đặt múi giờ hiện tại. Thông thường (như trong một nhiệm vụ), loại được ép buộc tương ứng. Đối với timestamp , điều này có nghĩa là khoảng thời gian bù đắp được cắt ngắn và bạn nhận được giá trị mong đợi. Ngoài ra, nếu loại đích không thể bắt nguồn từ ngữ cảnh, bạn có thể phải truyền một cách rõ ràng:

to_timestamp('20/8/2013 14:52:49', 'DD/MM/YYYY hh24:mi:ss')::timestamp

Vì điều đó chỉ đơn giản là loại bỏ khoảng thời gian bù đắp, nó dẫn đến giá trị mong đợi. Hoặc sử dụng AT TIME ZONE xây dựng với múi giờ bạn chọn:

to_timestamp('20/8/2013 14:52:49', 'DD/MM/YYYY hh24:mi:ss') AT TIME ZONE 'UTC'

Mặc dù múi giờ mục tiêu giống với timezone hiện tại của bạn thiết lập, không có chuyển đổi diễn ra. Nếu không, dấu thời gian kết quả được chuyển đổi tương ứng. Đọc thêm:

  • Bỏ qua hoàn toàn các múi giờ trong Rails và PostgreSQL


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ưu và nhược điểm của việc thực hiện các phép tính trong sql so với trong ứng dụng của bạn là gì

  2. Nhập tệp CSV đã nén vào PostgreSQL

  3. Cột không tồn tại?

  4. cursor.execute (INSERT INTO im_entry.test (+ entrym +) VALUES ('+ p +');)

  5. Hội nghị PostgreSQL mùa xuân 2011, Hoa Kỳ / Canada