两个日期字段之间的mysql查询

时间:2014-02-16 17:40:58

标签: sql phpmyadmin

好的,这就是我想要摆脱我的数据库。我有两个日期字段到达和离开,我很熟悉如何从这里开始。我需要检查到达日期> ='01/01/2013并且离开< = '02 / 15/2014'然而当我运行这个时,我显然在我的显示结果中获得2012年 - 由于我构建查询的方式 - 我需要做的就是在一年或一段时间离开我的桌子,即。 2013年1月1日至2014年2月14日

使用phpmyadmin进行查询

2 个答案:

答案 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位数年份

在列上定义特定于日期的数据类型以存储datetimedate and time值等值时,始终是一个不错的选择。

可接受的数据类型包括datedatetimetimestamp