mysql查询只检索带有start_date>的记录现在()

时间:2010-09-27 19:23:32

标签: php mysql

我正在尝试检索start_date大于当前时间戳的所有记录。任何想法为什么这可能不起作用:

WHERE (UNIX_TIMESTAMP(event_dates.start_date)) > DATE(NOW())

这是示例start_date列2010-10-30

2 个答案:

答案 0 :(得分:5)

  • UNIX_TIMESTAMP返回一个自纪元以来的第二个整数
  • DATE()返回类似'yyyy-mm-dd'
  • 的字符串

比较那些2会导致意想不到的结果我敢肯定。 使用UNIX_TIMESTAMPDATE,但两者都可以。 (或者进行UNIX_TIMESTAMP(DATE(NOW())),这样您就可以比较正确的格式。

答案 1 :(得分:1)

您正在将日期值(yyyy-mm-dd)与UNIX纪元进行比较,因此您的查询不起作用。

确保使用适当案例的正确数据类型。您需要日期,使用日期时间或日期,而不是时间戳。此外,MySQL表中的时间戳列具有特殊属性。

此外,在此日期列中使用索引。由于where子句中的now()函数,您的查询将不会被优化。首先尝试在变量中获取now的值,然后使用此变量运行查询,然后MySQL优化器将有机会优化您的查询。