zoukankan      html  css  js  c++  java
  • SQLITE 时间字段操作函数

    SQLite中的时间日期函数

    这是我学习SQLite时做的笔记,参考并翻译了Chris Newman写的《SQLite》中的《Working with Dates and Times》一文中的部分内容。


    SQLite包含了如下时间/日期函数:
    datetime().......................产生日期和时间
    date()...........................产生日期
    time()...........................产生时间
    strftime().......................对以上三个函数产生的日期和时间进行格式化

    datetime()的用法是:datetime(日期/时间,修正符,修正符...)
    date()和time()的语法与datetime()相同。

    在时间/日期函数里可以使用如下格式的字符串作为参数:
    YYYY-MM-DD
    YYYY-MM-DD HH:MM
    YYYY-MM-DD HH:MM:SS
    YYYY-MM-DD HH:MM:SS.SSS
    HH:MM
    HH:MM:SS
    HH:MM:SS.SSS
    now
    其中now是产生现在的时间。

    举例(写这个笔记的时间是2006年10月17日晚8点到10点,测试环境:SQLite 2.8.17,WinXP,北京时间):

    例1.
    select datetime('now');
    结果:2006-10-17 12:55:54

    例2.
    select datetime('2006-10-17');
    结果:2006-10-17 12:00:00

    例3.
    select datetime('2006-10-17 00:20:00','+1 hour','-12 minute');
    结果:2006-10-17 01:08:00

    例4.
    select date('2006-10-17','+1 day','+1 year');
    结果:2007-10-18

    例5.
    select datetime('now','start of year');
    结果:2006-01-01 00:00:00

    例6.
    select datetime('now','start of month');
    结果:2006-10-01 00:00:00

    例7.
    select datetime('now','start of day');
    结果:2006-10-17 00:00:00

    例8.
    select datetime('now','+10 hour','start of day','+10 hour');
    结果:2006-10-17 10:00:00

    例9.
    select datetime('now','localtime');
    结果:2006-10-17 21:21:47

    例10.
    select datetime('now','+8 hour');
    结果:2006-10-17 21:24:45


    例3中的+1 hour和-12 minute表示可以在基本时间上(datetime函数的第一个参数)增加或减少一定时间。

    例5中的start of year表示一年开始的时间。

    从例8可以看出,尽管第2个参数加上了10个小时,但是却被第3个参数“start of day”把时间归零到00:00:00,随后的第4个参数在00:00:00
    的基础上把时间增加了10个小时变成了10:00:00。

    例9把格林威治时区转换成本地时区。

    例10把格林威治时区转换成东八区。

    strftime()函数可以把YYYY-MM-DD HH:MM:SS格式的日期字符串转换成其它形式的字符串。
    strftime()的语法是strftime(格式, 日期/时间, 修正符, 修正符, ...)

    它可以用以下的符号对日期和时间进行格式化:
    %d 月份, 01-31
    %f 小数形式的秒,SS.SSS
    %H 小时, 00-23
    %j 算出某一天是该年的第几天,001-366
    %m 月份,00-12
    %M 分钟, 00-59
    %s 从1970年1月1日到现在的秒数
    %S 秒, 00-59
    %w 星期, 0-6 (0是星期天)
    %W 算出某一天属于该年的第几周, 01-53
    %Y 年, YYYY
    %% 百分号

    strftime()的用法举例如下:

    例11.
    select strftime('%Y.%m.%d %H:%M:%S','now','localtime');
    结果:2006.10.17 21:41:09


    例11用圆点作为日期的分隔附,并把时间转换为当地的时区的时间。

    -------------------

    select datetime('2015-06-10 11:17:00','+1 day','-1 hour','-10 minute','+1 year','start of day','+1 hour');

    注意前面的条件会被后面的覆盖.

    sqlite> select strftime('%Y-%m-%d %H:%M:%S','now','localtime');

    注意格式化时要使用指定的%符号,其实相当于c里面的sprintf

  • 相关阅读:
    prototype.js超强的javascript类库
    MySQL Server Architecture
    Know more about RBA redo block address
    MySQL无处不在
    利用Oracle Enterprise Manager Cloud Control 12c创建DataGuard Standby
    LAMP Stack
    9i中DG remote archive可能导致Primary Database挂起
    Oracle数据库升级与补丁
    Oracle为何会发生归档日志archivelog大小远小于联机重做日志online redo log size的情况?
    Oracle Ksplice如何工作?How does Ksplice work?
  • 原文地址:https://www.cnblogs.com/decwang/p/4565557.html
Copyright © 2011-2022 走看看