gpt4 book ai didi

mysql - 为什么 Between 找不到结束日期

转载 作者:行者123 更新时间:2023-11-29 16:06:34 24 4
gpt4 key购买 nike

我正在使用以下查询:

SELECT * 
FROM vaccines
WHERE (initial_date BETWEEN '1/1/2018' AND '10/31/2018')
AND customer_id='110607'
AND item_description= 'FLUZONE .QUAD MDV';

我没有得到任何结果,并且有该日期范围的条目,但是,结果显示到第 9 个月,从 10 月 -12 日我什么也没得到。

最佳答案

问:为什么 BETWEEN 找不到结束日期?

A:可能是因为 MySQL 正在进行字符串比较;比较字符串值而不是日期值。

如果我们要比较字符串,请注意任何以'9'开头的字符串将大于以 '1' 开头的字符串。

'9........'  is greater than '1........'

同样

'9/23/1999'  is greater than '10/31/2001'

即使我们包含前导零,作为字符串进行比较,我们在比较年份时仍然会遇到问题:

'09/23/2018'  is less than   '10/31/2001'
^^^^ ^^^^
<小时/>

如果我们想利用 MySQL 比较日期和日期时间值的能力,那么我们可以使用 MySQL 原生的 DATEDATETIME 类型,并避免进行字符串比较。

如果 initial_date 列定义为 DATEDATETIME 数据类型,则在查询中指定日期值,例如

 WHERE initial_date >= '2018-01-01' + INTERVAL 0 DAY 
AND initial_date < '2018-11-01' + INTERVAL 0 DAY

(注意:MySQL 日期文字可以表示为 'YYYY-MM-DD'。)

<小时/>

如果initial_date列定义为字符串类型(例如CHAR或VARCHAR),那么我们可以使用STR_TO_DATE<将字符串值转换为日期 函数例如

 WHERE STR_TO_DATE(initial_date,'mm/dd/yyyy') >= '2018-01-01' + INTERVAL 0 DAY 
AND STR_TO_DATE(initial_date,'mm/dd/yyyy') < '2018-11-01' + INTERVAL 0 DAY

(请注意,第二个参数是格式模型;该字符串将根据该模型进行解释。)

<小时/>

关于mysql - 为什么 Between 找不到结束日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55691388/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com