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

Giá trị chênh lệch múi giờ máy chủ

Đối với múi giờ bạn có thể:

SHOW timezone;

hoặc tương đương:

SELECT current_setting('TIMEZONE');

nhưng điều này có thể ở bất kỳ định dạng nào được máy chủ chấp nhận, vì vậy nó có thể trả về UTC , 08:00 , Australia/Victoria , hoặc tương tự.

Thật thất vọng, dường như không có chức năng tích hợp nào để báo cáo thời gian bù trừ theo giờ UTC mà khách hàng đang sử dụng theo giờ và phút, điều này có vẻ hơi điên rồ đối với tôi. Bạn có thể nhận được sự bù đắp bằng cách so sánh thời gian hiện tại ở UTC với thời gian hiện tại tại địa phương:

SELECT age(current_timestamp AT TIME ZONE 'UTC', current_timestamp)`

... nhưng IMO sẽ dễ dàng hơn khi trích xuất độ lệch tz trong vài giây từ current_timestamp và chuyển đổi thành khoảng thời gian:

SELECT to_char(extract(timezone from current_timestamp) * INTERVAL '1' second, 'FMHH24:MM');

Điều đó sẽ khớp với kết quả mong muốn ngoại trừ việc nó không tạo ra số 0 ở đầu, vì vậy -05:00 chỉ là -5:00 . Thật khó chịu, dường như không thể lấy được to_char để tạo ra số 0 ở đầu trong nhiều giờ, để lại cho tôi định dạng thủ công xấu xí sau:

CREATE OR REPLACE FUNCTION oracle_style_tz() RETURNS text AS $$
SELECT to_char(extract(timezone_hour FROM current_timestamp),'FM00')||':'||
       to_char(extract(timezone_minute FROM current_timestamp),'FM00');
$$ LANGUAGE 'SQL' STABLE;

Ghi có cho Glenn cho timezone_hourtimezone_minute thay vì hack mà tôi đã sử dụng trước đó với extract(timezone from current_timestamp) * INTERVAL '1' second) và một CTE.

Nếu bạn không cần số 0 ở đầu, bạn có thể sử dụng:

CREATE OR REPLACE FUNCTION oracle_style_tz() RETURNS text AS $$
SELECT to_char(extract(timezone from current_timestamp) * INTERVAL '1' second, 'FMHH24:MM');
$$ LANGUAGE 'SQL' STABLE;

Xem thêm:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm thế nào để khôi phục dataframe.to_sql trong python trong SQLAlchemy?

  2. Làm cách nào để kiểm tra xem có thứ gì đó tồn tại trong cơ sở dữ liệu postgresql bằng django không?

  3. Làm cách nào để tìm các bảng tham chiếu đến một hàng cụ thể thông qua khóa ngoại?

  4. Tìm kiếm toàn văn của Postgres:làm thế nào để tìm kiếm nhiều từ trong nhiều trường?

  5. Django JSONField bên trong ArrayField