java sqlite 日期比较_SQLite时间函数&日期时间、字符串、时间戳互相转换

‘now’为当前日期时间

**转字符串、时间

SELECT date('now');     -->结果:2018-05-05

SELECT time('now');     -->结果:06:55:38

SELECT datetime('now'); -->结果:2018-05-05 06:55:38

SELECT strftime('%Y-%m-%d %H:%M:%S', 'now');    -->结果:2018-05-05 06:55:38

1

2

3

4

**转时间戳

select strftime('%s','now');    -->结果:1525502284

select strftime('%s','2018-05-05');     -->结果:1525478400

1

2

时间戳转时间、字符串

select datetime(1525502284, 'unixepoch', 'localtime');  -->结果:2018-05-05 14:38:04

--对参数不理解可参考文末“修饰符”

1

2

扩展:SQLite的五个时间函数:

date(timestring, modifier, modifier, …)**:以 YYYY-MM-DD 格式返回日期

time(timestring, modifier, modifier, …)**:以 HH:MM:SS 格式返回时间

datetime(timestring, modifier, modifier, …)**:以 YYYY-MM-DD HH:MM:SS 格式返回日期时间

julianday(format, timestring, modifier, modifier, ..):返回从格林尼治时间的公元前 4714 年 11 月 24 日正午算起的天数

strftime(format, timestring, modifier, modifier, ..):根据第一个参数指定的格式字符串返回格式化的日期

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

date(…) –> strftime(‘%Y-%m-%d’,…)

time(…) –> strftime(‘%H:%M:%S’,…)

datetime(…) –> strftime(‘%Y-%m-%d %H:%M:%S’,…)

julianday(…) –> strftime(‘%J’,…)

来看看各参数的取值格式(文末举例):

日期时间字符串(timestring):

序号    日期时间字符串    实例

1    YYYY-MM-DD    2018-05-05

2    YYYY-MM-DD HH:MM    2018-05-05 12:10

3    YYYY-MM-DD HH:MM:SS.SSS    2018-05-05 15:39:20.100

4    MM-DD-YYYY HH:MM    05-05-2018 12:10

5    HH:MM    同理

6    YYYY-MM-DDTHH:MM    同理

7    HH:MM:SS    同理

8    YYYYMMDD HHMMSS    同理

9    now    2018-05-05 15:39:20

10    DDDDDDDDDD    1525478400(时间戳)

strftime() 函数,格式化串(format):

符号    描述

%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

%%    % 百分号

修饰符(modifier):

序号    符号    作用

1    [+-]NNN years    增加/减去指定数值的年

2    [+-]NNN months    增加/减去指定数值的月

3    [+-]NNN days    增加/减去指定数值的天

4    [+-]NNN hours    增加/减去指定数值的小时

5    [+-]NNN minutes    增加/减去指定数值的分钟

6    [+-]NNN.NNNN seconds    增加/减去指定数值的秒

7    start of year    当前日期的开始年

8    start of month    当前日期的开始月

9    start of day    当前日期的开始日

11    weekday N    表示返回下一个星期是N的日期和时间

12    unixepoch    用于将日期解释为UNIX时间(即:自1970-01-01以来的秒数,也就是时间戳)

13    localtime    表示返回本地时间

14    utc    表示返回UTC(世界统一时间)时间

重点:修饰符运用实例

SELECT datetime('now'); -->结果:2018-05-05 08:10:26(和本机时间可能不一致,时区问题请看使用‘localtime’修饰符后的变化)

SELECT datetime('now','1 years');-->结果:2019-05-05 08:10:26

SELECT datetime('now','1 months');-->结果:2018-06-05 08:10:26

SELECT datetime('now','1 days');-->结果:2018-05-06 08:10:26

SELECT datetime('now','1 hours');-->结果:2018-05-05 09:10:26

SELECT datetime('now','1 minutes');-->结果:2018-05-05 08:11:26

SELECT datetime('now','1 seconds');-->结果:2018-05-05 08:10:27

SELECT datetime('now','start of year');-->结果:2018-01-01 00:00:00

SELECT datetime('now','start of month');-->结果:2018-05-01 00:00:00

SELECT datetime('now','start of day');-->结果:2018-05-05 00:00:00

SELECT datetime('now','weekday 0');-->结果:2018-05-06 08:10:26

(解释:2018-05-05是周六,“weekday 0”表示返回下周的周日(系统默认以周日为一周的开始0),明天06号是周日,所以,返回了2018-05-06)

SELECT datetime('1525478400','unixepoch');-->结果:2018-05-05 00:00:00(unixepoch一般用于解释时间戳)

SELECT datetime('now','localtime');-->结果:2018-05-05 16:10:26(你会发现这个时间比没使用‘localtime’参数的时间多了8个小时,因为中国是东八时区)

SELECT datetime('now','utc');-->结果:2018-05-05 00:10:26(时区问题)

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

作者:markix

来源:CSDN

原文:https://blog.csdn.net/qq_31772441/article/details/80205560

版权声明:本文为博主原创文章,转载请附上博文链接!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值