Vấn đề:
Bạn muốn có ngày và giờ hiện tại trong cơ sở dữ liệu PostgreSQL. Bạn không cần chênh lệch múi giờ.
Giải pháp:
Chúng tôi sẽ sử dụng hàm LOCALTIMESTAMP
để nhận ngày và giờ hiện tại mà không có bất kỳ thông tin múi giờ nào:
SELECT LOCALTIMESTAMP ;
Đây là kết quả của truy vấn:
2019-09-24 20:10:58.977914
Thảo luận:
Hàm PostgreSQL LOCALTIMESTAMP
trả về ngày và giờ hiện tại (của máy chạy phiên bản PostgreSQL đó) dưới dạng dấu thời gian giá trị. Nó sử dụng ' YYYY-MM-DD hh:mm:ss.nnnnnnn 'định dạng, trong đó:
- YYYY là năm có 4 chữ số.
- MM là tháng có 2 chữ số.
- DD là ngày có 2 chữ số.
- hh là một giờ có 2 chữ số.
- mm là phút có 2 chữ số.
- ss là một giây có 2 chữ số.
- nnnnnn là phân số giây (độ chính xác từ 0 đến 6 chữ số).
Như bạn nhận thấy, hàm này không có dấu ngoặc. Tuy nhiên, nếu bạn muốn hiển thị ngày và giờ với độ chính xác cụ thể, hãy đặt một số nguyên từ 0 đến 6 làm đối số trong dấu ngoặc. Thao tác này sẽ trả về ngày và giờ với số giây phân số mong muốn của bạn. Ví dụ:LOCALTIMESTAMP(1)
chỉ biểu thị một giây phân số (tức là một vị trí sau số thập phân); 2 sẽ trả về hai vị trí, v.v. Độ chính xác mặc định là 6, cũng là số giây phân số tối đa; đây là những gì bạn nhận được nếu bạn hoàn toàn không sử dụng dấu ngoặc. Hãy xem ví dụ tiếp theo:
SELECT LOCALTIMESTAMP(0) ;
Đây là kết quả của truy vấn:
2019-09-24 20:10:58
Kết quả này không chứa giây phân số vì chúng tôi đặt 0 làm đối số.
Hàm này trả về thời gian mà giao dịch hiện tại bắt đầu. Sự khác biệt giữa LOCALTIMESTAMP
và CURRENT_TIMESTAMP
đó có phải là LOCALTIMESTAMP
không không bao gồm chênh lệch múi giờ.