如何在mySQL查询中选择日期相等?

时间:2012-06-11 11:24:36

标签: mysql sql

我想在mysql

中给定特定记录日期的表中选择行
SELECT * from TABLENAME WHERE FROM_DATE='06/11/2012'

我没有得到任何有用的东西。

4 个答案:

答案 0 :(得分:3)

首先,您应该使用标准日期格式Y-m-d - 否则您必须进行一些讨厌的查询,并且排序是真正的b * tch。

使用标准日期格式,您可以轻松地执行以下操作:

SELECT * FROM tablename WHERE from_date > '2012-06-11'

答案 1 :(得分:2)

DATE比较很可能是你想要的。如果您的from_date列的数据类型为DATE,则执行此操作时,您的代码应该是安全且可靠的:

WHERE from_date = STR_TO_DATE('06/11/2012', '%m/%d/%Y')

@Repox指出,您可以考虑将日期文字放在规范格式“2012-06-11”中。这是真的,如果你能做到的话。但是如果你需要它,STR_TO_DATE会为你做。这里有%x转换项的列表。 http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-format

如果您使用的是DATETIME数据类型,请注意:比较比看起来更复杂。 DATETIME项就像浮点数:如果其中一个与另一个完全相等,那只是巧合。那是因为它们代表时间(毫秒),而不仅仅是几天。

假设您的from_date列具有DATETIME类型,您应该使用

WHERE from_date >= STR_TO_DATE('06/11/2012', '%m/%d/%Y')
  AND from_date < STR_TO_DATE('06/11/2012', '%m/%d/%Y') + INTERVAL 1 DAY

这将记录您想要的那一天的所有时间,但不包括第二天的第一时刻。

如果您的from_date项目表示为字符串,请将其转换为DATEDATETIME数据类型。认真。你的结果会好得多。

答案 2 :(得分:1)

SELECT * from TABLENAME WHERE FROM_DATE='2012/06/13'

答案 3 :(得分:0)

如果使用mysql的DATE()函数

会更好
SELECT * FROM tablename WHERE DATE(from_date) > '2012-06-11'

因为,如果你设置为TIMESTAMP或DATETIME的from_date的数据类型,那么当你直接使用'&gt;'时它不会返回正确的结果符号