Sqlite 简明教程
SQLite - Date & Time
SQLite 支持以下五个日期和时间函数:
Sr.No. |
Function |
Example |
1 |
date(timestring, modifiers…) |
它以以下格式返回日期:YYYY-MM-DD |
2 |
time(timestring, modifiers…) |
它以 HH:MM:SS 返回时间 |
3 |
datetime(timestring, modifiers…) |
This returns YYYY-MM-DD HH:MM:SS |
4 |
julianday(timestring, modifiers…) |
它返回自公元前 4714 年 11 月 24 日格林尼治正午以来的天数。 |
5 |
strftime(timestring, modifiers…) |
它返回根据作为第一个参数指定的格式字符串格式化的日期,格式按照下面解释的格式化程序进行格式化。 |
上面提到的所有五个日期和时间函数都采用时间字符串作为参数。时间字符串后跟零个或多个修饰符。strftime() 函数还将格式字符串作为其第一个参数。以下部分将详细介绍不同类型时间字符串和修饰符。
Time Strings
时间字符串可以采用以下任何格式:
Sr.No. |
Time String |
Example |
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 |
30-12-2010 12:10 |
5 |
HH:MM |
12:10 |
6 |
YYYY-MM-DD*T*HH:MM |
2010-12-30 12:10 |
7 |
HH:MM:SS |
12:10:01 |
8 |
YYYYMMDD HHMMSS |
20101230 121001 |
9 |
now |
2013-05-07 |
您可以使用“T”作为分隔日期和时间的文字字符。
Modifiers
时间字符串后可以跟零个或多个修饰符,这些修饰符将改变上述五个函数中任何一个返回的日期和/或时间。修改器从左向右应用。
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
Formatters
SQLite 提供了一个非常方便的功能 strftime() 来格式化任何日期和时间。您可以使用以下替换来格式化您的日期和时间。
Substitution |
Description |
%d |
Day of month, 01-31 |
%f |
Fractional seconds, SS.SSS |
%H |
Hour, 00-23 |
%j |
Day of year, 001-366 |
%J |
Julian day number, DDDD.DDDD |
%m |
Month, 00-12 |
%M |
Minute, 00-59 |
%s |
Seconds since 1970-01-01 |
%S |
Seconds, 00-59 |
%w |
星期几,0-6(0 为星期日) |
%W |
Week of year, 01-53 |
%Y |
Year, YYYY |
%% |
% symbol |
Examples
现在让我们使用 SQLite 提示尝试各种示例。以下命令计算当前日期。
sqlite> SELECT date('now');
2013-05-07
以下命令计算当前月份的最后一天。
sqlite> SELECT date('now','start of month','+1 month','-1 day');
2013-05-31
以下命令计算给定 UNIX 时间戳 1092941466 的日期和时间。
sqlite> SELECT datetime(1092941466, 'unixepoch');
2004-08-19 18:51:06
以下命令计算给定 UNIX 时间戳 1092941466 的日期和时间,并补偿您当地的时区。
sqlite> SELECT datetime(1092941466, 'unixepoch', 'localtime');
2004-08-19 13:51:06
以下命令计算当前 UNIX 时间戳。
sqlite> SELECT strftime('%s','now');
1393348134
以下命令计算自美国独立宣言签署以来的天数。
sqlite> SELECT julianday('now') - julianday('1776-07-04');
86798.7094695023
以下命令计算自 2004 年某个时刻以来的秒数。
sqlite> SELECT strftime('%s','now') - strftime('%s','2004-01-01 02:34:56');
295001572
以下命令计算本年度十月第一个星期二的日期。
sqlite> SELECT date('now','start of year','+9 months','weekday 2');
2013-10-01
以下命令计算自 UNIX 纪元以来的时间,单位为秒(类似于 strftime('%s', 'now'),但包括小数部分)。
sqlite> SELECT (julianday('now') - 2440587.5)*86400.0;
1367926077.12598
在对日期进行格式化时,若要在 UTC 和本地时间值之间进行转换,请按如下方式使用 utc 或 localtime 修饰符 -
sqlite> SELECT time('12:00', 'localtime');
05:00:00
sqlite> SELECT time('12:00', 'utc');
19:00:00