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

Cách hoạt động của hàm Strftime () trong SQLite

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.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQLiteException:Mã thông báo không được nhận dạng khi đọc từ cơ sở dữ liệu

  2. Nhận NoClassDefFoundError khi cố gắng sử dụng Proguard và SQLcipher trong Android

  3. 6 cách để xóa các hàng trùng lặp có khóa chính trong SQLite

  4. SQLite - Bất kỳ sự khác biệt nào giữa ràng buộc bảng UNIQUE và ràng buộc cột UNIQUE?

  5. Android sqlite db.query dẫn đến CursorIndexOutOfBoundsException