zoukankan      html  css  js  c++  java
  • SQLite 的日期时间函数[笔记]

    这篇文章是根据 SQLite 官方 WIKI 里的内容翻译,如果有什么翻译不当的地方希望大家指出,毕竟我的英文水平实在很差。 SQLite 包括以下五个时间函数:

    1. date(日期时间字符串, 修正符, 修正符, ……)
    2. time(日期时间字符串, 修正符, 修正符, ……)
    3. datetime(日期时间字符串, 修正符, 修正符, ……)
    4. julianday(日期时间字符串, 修正符, 修正符, ……)
    5. strftime(日期时间格式, 日期时间字符串, 修正符, 修正符, ……)

    上述五个函数需要一个日期时间字符串做参数,后面可以跟零到多个修正符参数。而 strftime() 函数还需要一个日期时间格式字符串做第一个参数。

    1. date() 函数返回一个以 “YYYY-MM-DD” 为格式的日期;
    2. time() 函数返回一个以 “YYYY-MM-DD HH:MM:SS” 为格式的日期时间;
    3. julianday() 函数返回一个天数,从格林威治时间公元前4714年11月24号开始算起;
    4. strftime() 函数返回一个经过格式话的日期时间,它可以用下面的符号对日期和时间进行格式化:
      %d  一月中的第几天 01-31
      %f  小数形式的秒,SS.SSSS
      %H  小时 00-24
      %j  一年中的第几天 01-366
      %J  Julian Day Numbers
      %m  月份 01-12
      %M  分钟 00-59
      %s  从 1970-01-01日开始计算的秒数
      %S  秒 00-59
      %w  星期,0-6,0是星期天
      %W  一年中的第几周 00-53
      %Y  年份 0000-9999
      %%  % 百分号

    其他四个函数都可以用 strftime() 函数来表示:

    1. date(…)         ->   strftime(“%Y-%m-%d”,…)
    2. time(…)         ->   strftime(“%H:%M:%S”,…)
    3. datetime(…)     ->   strftime(“%Y-%m-%d %H:%M:%S”,…)
    4. julianday(…)    ->   strftime(“%J”,…)

    日期时间字符串

    可以用以下几种格式:

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

    在第五种到第七种格式中的“T”是一个分割日期和时间的字符;第八种到第十种格式只代表2000-01-01日的时间,第十一种格式的’now’表示返回一个当前的日期和时间,使用格林威治时间(UTC);第十二种格式表示一个 Julian Day Numbers。

    修正符

    日期和时间可以使用下面的修正符来更改日期或时间:

    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 week
    10. start of day
    11. weekday N
    12. unixepoch
    13. localtime
    14. utc

    前六个修正符就是简单的增加指定数值的时间和日期;第七到第十个修正符表示返回当前日期的开始;第十一个修正符表示返回下一个星期是N的日期和时间;第十二个修正符表示返回从1970-01-01开始算起的秒数;第十三个修正符表示返回本地时间。

    下面举一些例子:

    1. 计算机当前时间
      SELECT date(‘now’)
    2. 计算机当前月份的最后一天
      SELECT date(‘now’,’start of month’,’+1 month’,’-1 day’)
    3. 计算UNIX 时间戳1092941466表示的日期和时间
      SELECT datetime(‘1092941466’,’unixepoch’)
    4. 计算 UNIX 时间戳1092941466 表示的本地日期和时间
      SELECT datetime(‘1092941466’,’unixepoch’,’localtime’)
    5. 计算机当前UNIX 时间戳
      SELECT strftime(‘%s’,’now’)
    6. 两个日期之间相差多少天
      SELECT jolianday(‘now’)-jolianday(‘1981-12-23’)
    7. 两个日期时间之间相差多少秒
      SELECT julianday('now')*86400 - julianday('2004-01-01 02:34:56')*86400
    8. 计算今年十月份第一个星期二的日期
      SELECT date('now','start of year','+9 months','weekday 2');
  • 相关阅读:
    通过html()的方法获取文本内容, form表单组件显示的值与获取到的值不一致的问题
    quartz实例以及主要事项(注解)
    解决因为链表过长,sql查询慢的问题
    query flot 直方图上显示对应的y值
    git error: RPC failed; curl 18 transfer closed with outstanding read data remaining error: 7777 bytes of body are still expected
    iso七层模型及其功能作用
    计算机进制之间的转换,十进制转二进制换算
    libconfig++ 交叉编译流程
    Ubuntu 交叉编译( gcc-linaro-arm-linux-gnueabihf)环境搭建
    周立功IoT7000li编译移远EC20驱动记录
  • 原文地址:https://www.cnblogs.com/shineqiujuan/p/1700691.html
Copyright © 2011-2022 走看看