好的,这就是我想要摆脱我的数据库。我有两个日期字段到达和离开,我很熟悉如何从这里开始。我需要检查到达日期> ='01/01/2013并且离开< = '02 / 15/2014'然而当我运行这个时,我显然在我的显示结果中获得2012年 - 由于我构建查询的方式 - 我需要做的就是在一年或一段时间离开我的桌子,即。 2013年1月1日至2014年2月14日
使用phpmyadmin进行查询
答案 0 :(得分:0)
如果您要比较两种不同的数据类型(在您的情况下 - date
列和字符串文字),则不应依赖数据库来转换它们。正如您在用例中看到的那样,您将日期转换为字符串,并按字典顺序进行比较。相反,您应该明确地将文字转换为date
,并对该数据类型进行所有比较:
SELECT *
FROM my_table
WHERE arrivaldate >= STR_TO_DATE('01-01-2013', '%D-%M-%Y')
AND departdate <= STR_TO_DATE('15-02-2014', '%D-%M-%Y')
答案 1 :(得分:0)
试试这个:
WHERE
STR_TO_DATE( arrivaldate, '%m/%d/%Y' ) >= '01/01/2013'
AND
STR_TO_DATE( departdate, '%m/%d/%Y' ) <= '02/15/2014'
不要忘记使用:
'%m'
(小写m
)是2个月的月份'%d'
(小写d
)用于2位数日期'%Y'
(大写Y
)是4位数年份在列上定义特定于日期的数据类型以存储date
,time
和date and time
值等值时,始终是一个不错的选择。
可接受的数据类型包括date
,datetime
和timestamp
。