根据datetime列查询记录

发布于 2024-10-21 13:44:08 字数 336 浏览 2 评论 0原文

我在 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' );

但它与任何记录都不匹配。没有时间部分如何查询。

谢谢

I have a column of type datetime in MySql table. Stored values are like this:

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

Now I want to query some records based on this column but I have only date part not time part.
So I am querying like this in zend.

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

But it does not match any record. How can I query without time part.

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

耶耶耶 2024-10-28 13:44:08

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

try this WHERE DATE(tableName.columnName) = '2008-02-15'

朕就是辣么酷 2024-10-28 13:44:08

@Shota 提供的答案是可行的,但是它会阻止 MySQL 在日期时间列上使用任何索引,因为必须在表的每一行上调用 DATE 函数来查看它是否匹配。

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

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

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

The answer @Shota has provided will work, however it will prevent MySQL from using any indexes on the datetime column due to the DATE function having to be called on every row of the table to see if it matches.

If you hard code the time range into the query it will give the same result and still allow indexes to be used.

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

Please note i may have the php syntax wrong but you should get the idea.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文