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 中提供了以下修改器:

  1. NNN days

  2. NNN hours

  3. NNN minutes

  4. NNN.NNNN seconds

  5. NNN months

  6. NNN years

  7. start of month

  8. start of year

  9. start of day

  10. weekday N

  11. unixepoch

  12. localtime

  13. 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