根据datetime列查询记录

时间:2011-03-11 09:18:55

标签: php mysql zend-framework datetime zend-db

我在MySql表中有一个 datetime 类型的列。存储的值如下:

2008-02-15 17:21:56
2008-02-15 17:22:02
2008-02-15 17:22:03

现在我想基于这个列查询一些记录,但我只有日期部分而不是时间部分。 所以我在zend中这样查询。

$select->where('tableName.columnName = ?', '2008-02-15' );

但它与任何记录都不匹配。如何在没有时间的情况下进行查询。

由于

2 个答案:

答案 0 :(得分:3)

试试这个WHERE DATE(tableName.columnName) = '2008-02-15'

答案 1 :(得分:2)

@Shota提供的答案将起作用,但它会阻止MySQL在datetime列上使用任何索引,因为必须在表的每一行调用DATE函数以查看它是否匹配。

如果您将时间范围硬编码到查询中,它将给出相同的结果并仍然允许使用索引。

例如。 $select->where('tableName.columnName >= ? AND tableName.columnName <= ?', '2008-02-15 00:00:00', '2008-02-15 23:59:59' );

请注意我可能有错误的PHP语法,但你应该明白这一点。