【问题标题】:SQL Between query not work properly查询之间的 SQL 无法正常工作
【发布时间】:2017-05-16 05:56:51
【问题描述】:
SELECT * FROM `incomes` WHERE incomeDate BETWEEN '28-12-2016' and '31-01-2017'

这个查询不起作用,但是当我在下面进行查询时,它会显示结果

SELECT * FROM `incomes` WHERE incomeDate BETWEEN '28-12-2016' and '31-12-2016'

【问题讨论】:

  • ...incomeDate 列的数据类型是什么?是声明为DATE 还是VARCHAR?请注意,dd-mm-yyyy 格式的字符串文字是 not 规范的;字符串的比较从左到右逐个字符进行。因此,'29-07-1999' 的字符串值将是 两个字符串文字之间,但用来表示 日期,日期不是。

标签: mysql forms date report between


【解决方案1】:

请更改日期格式,MYSQL 支持 'YYYY-MM-DD' 日期格式比较。请使用以下查询。

SELECT * FROM incomes WHERE incomeDate BETWEEN '2016-12-28' and '2017-01-31'.

希望这会对你有所帮助。

【讨论】:

    【解决方案2】:

    您正在将日期列与(两个)字符串文字进行比较。这里发生的是将日期转换为字符串并按字典顺序进行比较。相反,您应该将字符串显式转换为日期,从而按日期顺序比较它们:

    SELECT * 
    FROM   incomes 
    WHERE  incomeDate BETWEEN STR_TO_DATE('28-12-2016', '%d-%m-%Y') AND 
                              STR_TO_DATE('31-01-2017', '%d-%m-%Y')
    

    【讨论】:

    • 嗯,它总是一个字典比较!
    猜你喜欢
    • 2021-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-29
    • 1970-01-01
    相关资源
    最近更新 更多