【问题标题】:How to do less than equal to for date in sqlite如何在sqlite中做小于等于日期
【发布时间】:2021-09-19 02:32:45
【问题描述】:

当我尝试运行以下查询时,即使日期时间与表中的相同,我也没有得到任何结果。

BillDateTime 列是 TEXT 数据类型

SELECT * FROM BillingTransaction WHERE BillDateTime <= datetime('2021-09-19 07:21:31.371766')
BillNo VechicleNo BillDateTime LoadType BillAmount FirstWeight SecondWeight
1 ka04sdfl 2021-09-19 07:21:31.371766 EMPTY 30 400 0

【问题讨论】:

  • @KenWhite datetime() 不会将字符串转换为日期,因为 SQLite 中没有日期/日期时间数据类型:sqlite.org/datatype3.html

标签: sqlite sql-date-functions sqldatetime


【解决方案1】:

函数datetime() 会在几秒后剥离所有内容,因为它相当于:

strftime('%Y-%m-%d %H:%M:%S', ...)

结果:

SELECT datetime('2021-09-19 07:21:31.371766')

是:

2021-09-19 07:21:31

所以你的代码相当于:

SELECT * FROM BillingTransaction WHERE BillDateTime <= '2021-09-19 07:21:31'

这就是你没有得到任何行的原因。

您不需要函数datetime(),因为BillDateTime 列的值是正确ISO 格式的字符串。

您可以直接与它们进行比较:

SELECT * 
FROM BillingTransaction 
WHERE BillDateTime <= '2021-09-19 07:21:31.371766'

【讨论】:

    猜你喜欢
    • 2016-04-17
    • 1970-01-01
    • 2017-09-26
    • 1970-01-01
    • 2014-12-26
    • 2021-07-09
    • 2013-03-30
    • 1970-01-01
    • 2015-03-11
    相关资源
    最近更新 更多