我在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' );
但它与任何记录都不匹配。如何在没有时间的情况下进行查询。
由于
答案 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语法,但你应该明白这一点。