-1

我想从给定mysql中特定记录日期的表中选择行

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

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

4

4 回答 4

3

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

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

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

于 2012-06-11T11:27:33.953 回答
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数据类型。严重地。你的结果会好很多。

于 2012-06-11T12:43:04.060 回答
1
SELECT * from TABLENAME WHERE FROM_DATE='2012/06/13'
于 2012-06-13T13:53:10.250 回答
0

如果你使用DATE()mysql的功能会更好

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

因为,如果您将 from_date 的数据类型设置为 TIMESTAMP 或 DATETIME,那么当您直接使用“>”符号时,有时它不会返回正确的结果

于 2012-06-11T11:34:12.093 回答