我想在mysql
中给定特定记录日期的表中选择行SELECT * from TABLENAME WHERE FROM_DATE='06/11/2012'
我没有得到任何有用的东西。
答案 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项目表示为字符串,请将其转换为DATE
或DATETIME
数据类型。认真。你的结果会好得多。
答案 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;'时它不会返回正确的结果符号