SQLite unixepoch() 函数使用指南

SQLite unixepoch() 函数将通过一个时间值和修饰符指定的时间值转为一个 Unix 时间戳,即,距离 UTC 时间 1970-01-01 00:00:00 的秒数。

unixepoch() 语法

这里是 SQLite unixepoch() 的语法:

unixepoch(time_value [, modifier, modifier, ...])

参数

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 unixepoch() 函数返回一个指定的时间值对应的 Unix 时间戳。如果不提供任何参数, julianday() 函数返回当前的日期时间对应的 Unix 时间戳。

unixepoch() 示例

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

  • 使用 SQLite unixepoch() 函数获取当前时间的 Unix 时间戳:

    SELECT unixepoch(), unixepoch('now');
    
    unixepoch()  unixepoch('now')
    -----------  ----------------
    1658823494   1658823494
  • 使用 SQLite unixepoch() 函数将 2022-07-26 12:00:00 的上一秒转为 Unix 时间戳:

    SELECT
        unixepoch('2022-07-26 12:00:00'),
        unixepoch('2022-07-26 12:00:00', '-1 second');
    
    unixepoch('2022-07-26 12:00:00')  unixepoch('2022-07-26 12:00:00', '-1 second')
    --------------------------------  ---------------------------------------------
    1658836800                        1658836799
  • 使用 SQLite unixepoch() 函数获取当年的最后一天对应的 Unix 时间戳:

    SELECT unixepoch('now', 'start of year', '1 year', '-1 day');
    
    unixepoch('now', 'start of year', '1 year', '-1 day')
    -----------------------------------------------------
    1672444800