SQLite datetime()
hàm cho phép bạn trả về giá trị ngày và giờ dựa trên chuỗi thời gian và bất kỳ công cụ sửa đổi nào.
Nó trả về ngày ở định dạng sau:YYYY-MM-DD HH:MM:SS
Để sử dụng hàm này, bạn cần cung cấp chuỗi thời gian, cộng với bất kỳ công cụ sửa đổi (tùy chọn) nào. Công cụ sửa đổi cho phép bạn thay đổi ngày, chẳng hạn như thêm một số ngày, đặt nó thành giờ địa phương, v.v.
Cú pháp
Cú pháp như sau:
datetime(timestring, modifier, modifier, ...)
timestring
đối số phải là một chuỗi thời gian hợp lệ.
Công cụ sửa đổi modifier
đối số là tùy chọn. Bạn có thể cung cấp một hoặc nhiều bổ ngữ. Nếu bạn cung cấp một công cụ sửa đổi, nó phải là một công cụ sửa đổi hợp lệ.
Ví dụ
Đây là một ví dụ để chứng minh datetime()
hàm đang được sử dụng với một đối số.
SELECT datetime('now');
Kết quả:
2020-04-28 23:56:06
now
chuỗi thời gian được chuyển đổi thành ngày và giờ hiện tại.
Thêm công cụ sửa đổi
Chúng tôi có thể sửa đổi kết quả trước đó bằng cách sử dụng một công cụ sửa đổi. Đây là một ví dụ.
SELECT datetime('now', '+3 hours');
Kết quả:
2020-04-29 02:56:52
Trong trường hợp này, tôi đã thêm ba giờ vào thời gian. Với thời gian ban đầu, điều này cũng dẫn đến ngày được chuyển sang ngày hôm sau.
Nhiều công cụ sửa đổi
Như đã đề cập, bạn có thể thêm một hoặc nhiều bổ ngữ. Dưới đây là ví dụ về việc thêm một công cụ sửa đổi khác vào ví dụ trước.
SELECT datetime('now', '+3 hours', 'localtime');
Kết quả:
2020-04-29 12:58:13
Trong trường hợp của tôi, localtime
sửa đổi dẫn đến thời gian được di chuyển về phía trước.
Lý do nó làm được điều này là vì localtime
công cụ sửa đổi giả định chuỗi thời gian được cung cấp là Giờ Phối hợp Toàn cầu (UTC). Sau đó, nó điều chỉnh chuỗi thời gian để nó hiển thị giờ địa phương.
Do đó, bạn có thể nhận được một kết quả khác, tùy thuộc vào giờ địa phương của bạn.
Đây là một lần nữa so sánh giờ địa phương ban đầu với kết quả đã sửa đổi:
SELECT
datetime('now', 'localtime') AS "Local",
datetime('now', '+3 hours', 'localtime') AS "Modified";
Kết quả:
Local Modified ------------------- ------------------- 2020-04-29 10:02:09 2020-04-29 13:02:09
Ngày là Chuỗi thời gian
Các ví dụ trên sử dụng now
dưới dạng chuỗi thời gian, nhưng bạn có thể cung cấp bất kỳ chuỗi thời gian hợp lệ nào.
Nếu bạn chỉ cung cấp phần ngày, phần thời gian sẽ được đặt thành tất cả các số không.
SELECT datetime('2010-08-15');
Kết quả:
2010-08-15 00:00:00
Nếu chỉ cung cấp phần thời gian, thì ngày được đặt thành 2000-01-01.
SELECT datetime('23:58:57');
Kết quả:
2000-01-01 23:58:57
Dưới đây là một ví dụ sử dụng Ngày Julian làm chuỗi thời gian.
SELECT datetime('2451545.49927083');
Kết quả:
2000-01-01 23:58:57
datetime () so với strftime ()
datetime()
hàm trả về chính xác cùng một kết quả mà strftime('%Y-%m-%d %H:%M:%S', ...)
lợi nhuận. datetime()
chỉ là một cách thuận tiện hơn để thực hiện.
SELECT
datetime('now'),
strftime('%Y-%m-%d %H:%M:%S', 'now');
Kết quả:
datetime('now') strftime('%Y-%m-%d %H:%M:%S', 'now') ------------------- ------------------------------------ 2020-04-29 00:16:12 2020-04-29 00:16:12
Phạm vi ngày
Như với tất cả các hàm ngày và giờ của SQLite, datetime()
chỉ hoạt động cho các ngày từ 0000-01-01 00:00:00 đến 9999-12-31 23:59:59 (số ngày julian từ 1721059,5 đến 5373484,5).
Đối với những ngày nằm ngoài phạm vi đó, kết quả không được xác định.