精易论坛

标题: sqlite日期时间比较问题 [打印本页]

作者: 圆圈    时间: 2024-4-24 10:19
标题: sqlite日期时间比较问题
  
变量名类 型静态数组备 注
记录集SQLITE记录集 
记录集.置SQL语句 (“select * from 表名 where 时间字段 > strftime('%Y/%m/%d %H:%M', 'now')”, sql)


i支持库列表   支持库注释   
sqlite3(未知支持库)

这段函数是取字段中大于现在时间的日期(年、月、日、时、分)

但sqlite中,时、分是不合法函数
也就是说,日期时间字段只能比较年月日,时、分不能比较


请问如何实现时、分比较

作者: 亮蓝色的风    时间: 2024-4-24 10:30
select * from 表名 where strftime('%s',时间字段) > strftime('%s', 'now')

%s        从 1970-01-01 算起的秒数
作者: 永美发    时间: 2024-4-24 10:35
当前时间  SELECT datetime('now')
//更多请阅读:https://www.yiibai.com/sqlite/datetime.html


作者: q981204899    时间: 2024-4-24 10:42
select * from 表名 where 时间字段<now() order by ID desc
作者: 圆圈    时间: 2024-4-24 10:46
q981204899 发表于 2024-4-24 10:42
select * from 表名 where 时间字段

不行哦,你这只是年比较,过自动过滤掉时、分比较
作者: q981204899    时间: 2024-4-24 10:53
圆圈 发表于 2024-4-24 10:46
不行哦,你这只是年比较,过自动过滤掉时、分比较

在SQL中,NOW() 函数返回当前的日期和时间,包括年、月、日、时、分、秒。
作者: 圆圈    时间: 2024-4-24 11:17
q981204899 发表于 2024-4-24 10:53
在SQL中,NOW() 函数返回当前的日期和时间,包括年、月、日、时、分、秒。 ...

是的,但是sqlite中,时、分、秒只能用来返回数据,返回值不能用作比较,只认 年、月、日
作者: 永美发    时间: 2024-4-24 14:57
自己取时间 进去对比就可以了
作者: 亮蓝色的风    时间: 2024-4-27 09:41
sqlite> select  (strftime('%s','2024-04-27 20:01:00')-strftime('%s','2024-04-27 09:03:00'))/60.00,(strftime('%s','2024-04-27 20:01:00')-strftime('%s','2024-04-27 09:03:00'))/3600.00 ;
+-----------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+
| (strftime('%s','2024-04-27 20:01:00')-strftime('%s','2024-04-27 09:03:00'))/60.00 | (strftime('%s','2024-04-27 20:01:00')-strftime('%s','2024-04-27 09:03:00'))/3600.00 |
+-----------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+
| 658.0                                                                             | 10.9666666666667                                                                    |
+-----------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+
1 row in set (0.08 sec)
/60就是相差的分钟  /3600就是相差的小时 不除是秒数 不知道你还要怎么比较?




欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4