SQLite strftime() 函数使用指南

SQLite strftime() 函数将指定的一个时间值和修饰符对应的时间值按找指定的格式输出。

strftime() 语法

这里是 SQLite strftime() 的语法:

strftime(format, time_value [, modifier, modifier, ...])

参数

format

必需的。格式化字符串。 您可以使用以下的占位符构建格式化字符串:

  • %d - 一个月中的一天天: 00
  • %f - 小数秒: SS.SSS
  • %H - 小时: 00-24
  • %j - 一年中的一天: 001-366
  • %J - 儒略天数,有小数
  • %m - 月份: 01-12
  • %M - 分钟: 00-59
  • %s - 从 1970-01-01 开始的秒数
  • %S - 秒: 00-59
  • %w - 工作日编号, 0-6, 星期天为 0
  • %W - 周编号: 00-53
  • %Y - 年: 0000-9999
  • %% - %
time_value

可选的。时间值。时间值可以采用以下任何格式,如下所示。该值通常是一个字符串,但在格式为 12 的情况下,它可以是整数或浮点数。

  1. YYYY-MM-DD
  2. YYYY-MM-DD HH:MM
  3. YYYY-MM-DD HH:MM:SS
  4. YYYY-MM-DD HH:MM:SS.SSS
  5. YYYY-MM-DDTHH:MM
  6. YYYY-MM-DDTHH:MM:SS
  7. YYYY-MM-DDTHH:MM:SS.SSS
  8. HH:MM
  9. HH:MM:SS
  10. HH:MM:SS.SSS
  11. now - 表示当前时间
  12. DDDDDDDDDD.dddddd - 带小数部分的儒略历日期数
modifier

可选的。您可以使用零个或多个更改时间值。多个修饰符从左到右按照顺序应用。您可以使用如下的修饰符:

  1. NNN days - 时间值 time_value 加上 NNN
  2. NNN hours - 时间值 time_value 加上 NNN 小时
  3. NNN minutes - 时间值 time_value 加上 NNN 分钟
  4. NNN.NNNN seconds - 时间值 time_value 加上 NNN.NNNN
  5. NNN months - 时间值 time_value 加上 NNN 个月
  6. NNN years - 时间值 time_value 加上 NNN
  7. start of month - 回退到时间值 time_value 的月初
  8. start of year - 回退到时间值 time_value 的年初
  9. start of day - 回退到时间值 time_value 当天的开始
  10. weekday N - 将时间值 time_value 前进到工作日 N
  11. unixepoch - Unix 时间戳
  12. julianday - 返回儒略历
  13. auto
  14. localtime - 返回当前时间
  15. utc - 返回 utc 时间

NNN 表示一个数字。 可以是整数或者负数。 如果 NNN 是负数,则表示减去。

返回值

SQLite strftime() 函数返回一个指定格式的日期时间字符串。如果不提供任何参数, strftime() 函数返回当前的日期。

如果您不提供 format 参数,strftime() 函数将返回 NULL

其他的日期时间函数都可以使用 strftime() 函数实现:

  • strftime('%Y-%m-%d', ...) 相当于 date(...)
  • strftime('%H:%M:%S', ...) 相当于 time(...)
  • strftime('%Y-%m-%d %H:%M:%S', ...) 相当于 datetime(...)
  • strftime('%J', ...) -- note-1 相当于 julianday(...),不同的是 julianday(...) 返回一个数字。
  • strftime('%s', ...) -- note-1 相当于 unixepoch(...),不同的是 julianday(...) 返回一个整数。

strftime() 示例

这里列举了一些示例以展示 SQLite strftime() 函数的常用的用法。

  • 使用 SQLite strftime() 函数获取当前日期:

    SELECT
        strftime('%Y-%m-%d'),
        strftime('%Y-%m-%d', 'now');
    
    strftime('%Y-%m-%d')  strftime('%Y-%m-%d', 'now')
    --------------------  ---------------------------
    2022-07-26            2022-07-26
  • 使用 SQLite strftime() 函数获取当前日期时间:

    SELECT
        strftime('%Y-%m-%d %H:%M:%S'),
        strftime('%Y-%m-%d %H:%M:%S', 'now');
    
    strftime('%Y-%m-%d %H:%M:%S')  strftime('%Y-%m-%d %H:%M:%S', 'now')
    -----------------------------  ------------------------------------
    2022-07-26 08:47:26            2022-07-26 08:47:26
  • 使用 SQLite strftime() 函数获取当前时间:

    SELECT
        strftime('%H:%M:%S'),
        strftime('%H:%M:%S', 'now');
    
    strftime('%H:%M:%S')  strftime('%H:%M:%S', 'now')
    --------------------  ---------------------------
    08:48:40              08:48:40
  • 使用 SQLite strftime() 函数获取当前时间的 Unix 时间戳:

    SELECT
        strftime('%s'),
        strftime('%s', 'now');
    
    strftime('%s')  strftime('%s', 'now')
    --------------  ---------------------
    1658825364      1658825364
  • 使用 SQLite strftime() 函数获取当前日期:

    SELECT strftime('%Y-%m-%d', 'now', 'start of year', '1 year', '-1 day');
    
    strftime('%Y-%m-%d', 'now', 'start of year', '1 year', '-1 d
    ------------------------------------------------------------
    2022-12-31