【问题标题】:Query records based on datetime column根据日期时间列查询记录
【发布时间】:2011-03-31 00:55:41
【问题描述】:
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' );
但它不匹配任何记录。没有时间部分如何查询。
谢谢
【问题讨论】:
标签:
php
mysql
zend-framework
datetime
zend-db
【解决方案1】:
试试这个WHERE DATE(tableName.columnName) = '2008-02-15'
【解决方案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 语法可能有误,但你应该明白。