SQLite strftime()
hàm cho phép bạn trả về giá trị ngày và giờ ở một định dạng được chỉ định.
Giá trị ngày / giờ thực tế được trả về dựa trên chuỗi thời gian mà bạn cung cấp làm đối số khi bạn gọi hàm, cũng như bất kỳ công cụ sửa đổi nào mà bạn đưa vào (làm đối số tùy chọn). 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:
strftime(format, timestring, modifier, modifier, ...)
Định dạng format
đối số có thể là bất kỳ sự kết hợp nào của các thay thế chuỗi định dạng hợp lệ cho strftime()
chức năng.
timestring
đối số phải là một chuỗi thời gian hợp lệ.
Công cụ sửa đổi format
đố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.
SELECT strftime('%Y-%m-%d %H:%M:%S', 'now');
Kết quả:
2020-04-29 01:29:54
now
chuỗi thời gian được chuyển đổi thành ngày và giờ hiện tại, dựa trên chuỗi định dạng được cung cấp.
Trong trường hợp này, chuỗi định dạng của tôi trả về chính xác cùng một kết quả mà datetime('now')
sẽ trở lạ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 strftime('%Y-%m-%d %H:%M:%S', 'now', '+2 hours');
Kết quả:
2020-04-29 03:31:50
Trong trường hợp này, tôi đã thêm hai giờ vào thời gian.
Nhiều công cụ sửa đổi
Bạn có thể thêm 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 strftime('%Y-%m-%d %H:%M:%S', 'now', '+2 hours', 'localtime');
Kết quả:
2020-04-29 13:33:22
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.
Điều này là do 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.
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
strftime('%Y-%m-%d %H:%M:%S', 'now', 'localtime') AS "Local",
strftime('%Y-%m-%d %H:%M:%S', 'now', '+2 hours', 'localtime') AS "Modified";
Kết quả:
Local Modified ------------------- ------------------- 2020-04-29 11:34:57 2020-04-29 13:34:57
Unix / Epoch Time
Bạn có thể sử dụng %s
chuỗi định dạng (chữ thường) để tính toán thời gian của kỷ nguyên.
SELECT strftime('%s', 'now');
Kết quả:
1588124826
Thời gian kỷ nguyên (còn được gọi là thời gian Kỷ nguyên, thời gian POSIX, giây kể từ Kỷ nguyên hoặc thời gian Kỷ nguyên UNIX) là số giây kể từ năm 1970-01-01.
Unix time được sử dụng rộng rãi trong các hệ điều hành và các định dạng tệp.
Ngày Julian
Bạn có thể sử dụng %J
để quay lại Ngày Julian.
Ngày Julian là số ngày kể từ buổi trưa ở Greenwich vào ngày 24 tháng 11 năm 4714 trước Công nguyên. (sử dụng lịch Gregorian Proleptic).
Nếu sử dụng lịch Julian dễ hiểu thì đây là Thứ Hai, ngày 1 tháng 1 năm 4713 trước Công nguyên.
Ngày Julian thường được các nhà thiên văn học, phần mềm, v.v. sử dụng để tính số ngày trôi qua giữa hai sự kiện.
Dưới đây là cách quay lại Ngày Julian với strftime()
chức năng.
SELECT strftime('%J', 'now');
Kết quả:
2458968.575441667
Một cách khác để thực hiện việc này trong SQLite là sử dụng julianday()
chức năng.
Phạm vi ngày
Như với tất cả các hàm ngày và giờ của SQLite, strftime()
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.