SQLITE时间操作

1
2
3
4
5
6
7
SELECT strftime('%s','2004-08-19 18:51:06');
SELECT strftime('%s','2004-08-19 18:51:06', 'utc');

sqlite> SELECT strftime('%s','2004-08-19 18:51:06');
1092941466
sqlite> SELECT strftime('%s','2004-08-19 18:51:06', 'utc');
1092912666
1
2
3
4
5
6
SELECT date('now');
SELECT time('now');
SELECT datetime('now');
sqlite> SELECT datetime('now');
2024-10-15 07:54:29
这三个时间都是 UTC 时间。如果要显示当前时区的时间应该用:
1
2
3
4
5
SELECT date('now', 'localtime');
SELECT time('now', 'localtime');
SELECT datetime('now', 'localtime');
sqlite> SELECT datetime('now', 'localtime');
2024-10-15 15:54:35

SQLite中时间操作的常用函数

  1. ‌**date(timestring, modifiers…)**‌:以”YYYY-MM-DD”格式返回日期。
  2. ‌**time(timestring, modifiers…)**‌:以”HH:MM”格式返回时间。
  3. ‌**datetime(timestring, modifiers…)**‌:以”YYYY-MM-DD HH:MM”格式返回日期和时间。
  4. ‌**julianday(timestring, modifiers…)**‌:返回从格林尼治时间的公元前4714年11月24日正午算起的天数。
  5. ‌**strftime(timestring, modifiers…)**‌:根据第一个参数指定的格式字符串返回格式化的日期和时间。

SQLite中时间格式化函数的使用示例

  1. 获取当前日期和时间:SELECT datetime('now');
  2. 获取当前日期:SELECT date('now');
  3. 获取当前时间:SELECT time('now');
  4. 格式化日期和时间:SELECT strftime('%Y-%m-%d %H:%M:%S', 'now');
  5. 计算日期之间的差值:SELECT julianday('2022-01-01') - julianday('2021-01-01');
  6. 在日期上进行加减操作:SELECT date('2022-01-01', '+1 year'); SELECT date('2022-01-01', '-1 month');
  7. 在时间上进行加减操作:SELECT time('12:00:00', '+1 hour'); SELECT time('12:00:00', '-30 minutes');
  8. 比较日期和时间:SELECT datetime('2022-01-01') > datetime('2021-01-01');

时间字符串

一个时间字符串可以采用下面任何一种格式:

序号 时间字符串 实例
1 YYYY-MM-DD 2010-12-30
2 YYYY-MM-DD HH:MM 2010-12-30 12:10
3 YYYY-MM-DD HH:MM:SS.SSS 2010-12-30 12:10:04.100
4 MM-DD-YYYY HH:MM 12-30-2010 12:10
5 HH:MM 12:10
6 YYYY-MM-DDTHH:MM 2010-12-30 12:10
7 HH:MM:SS 12:10:01
8 YYYYMMDD HHMMSS 20101230 121001
9 now 2013-05-07

修饰符(Modifier)

时间字符串后边可跟着零个或多个的修饰符,这将改变有上述五个函数返回的日期和/或时间。任何上述五大功能返回时间。修饰符应从左到右使用,下面列出了可在 SQLite 中使用的修饰符:

  • NNN days

  • NNN hours

  • NNN minutes

  • NNN.NNNN seconds

  • NNN months

  • NNN years

  • start of month

  • start of year

  • start of day

  • weekday N

  • unixepoch

  • localtime

  • utc

格式化

SQLite 提供了非常方便的函数 strftime() 来格式化任何日期和时间。您可以使用以下的替换来格式化日期和时间:

替换 描述
%d 一月中的第几天,01-31
%f 带小数部分的秒,SS.SSS
%H 小时,00-23
%j 一年中的第几天,001-366
%J 儒略日数,DDDD.DDDD
%m 月,00-12
%M 分,00-59
%s 从 1970-01-01 算起的秒数
%S 秒,00-59
%w 一周中的第几天,0-6 (0 is Sunday)
%W 一年中的第几周,01-53
%Y 年,YYYY
%% % symbol