我想从表中选择与特定日期对应的所有行。我将时间戳存储在模式2010-08-18 04:43:00中。如果我想选择一天内的所有行,如何查询表?
我能想到的一种方法是获取当天的时间戳,将其转换为Unix时间戳,然后查询表。但这听起来似乎有很多工作要做。有没有更简单的替代方案?
在此之前非常感谢。
发布于 2010-08-18 07:33:45
Michael概述的方法是可行的,但它是基于字符串的,因此效率不如基于整数的搜索。
我真的不认为创建两个UNIX时间戳(一个用于00:00:00,另一个用于23:59:59 )有什么问题,并检查您是否在该时间内。(请确保实际计算这两个不同的值,以确保您考虑了夏令时)。
如果您真的不想自己获取这些值(SELECT UNIX_TIMESTAMP("$Timestamp 00:00:00"), UNIX_TIMESTAMP("$Timestamp 23:59:59")),您甚至可以使用MySQL来获取这些值,然后使用这两个值。
如果你有一个小的数据集,Michael上面的方法是很好的。
发布于 2010-08-18 07:19:35
SELECT *
FROM `table_name`
WHERE `date_column` LIKE '2010-08-17 %';或者:
SELECT *
FROM `table_name`
WHERE DAY( `date_column` ) = 17
AND MONTH( `date_column` ) = 08
AND YEAR( `date_column` ) = 2010
LIMIT 0 , 30参考:http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html
发布于 2010-08-18 07:48:53
很简单:
SELECT *
FROM `table_name`
WHERE DATE(`date_column`) = '2010-08-17';请注意,只有当您的date_column是TIMESTAMP或DATETIME类型时,它才是有效的。
编辑:既然马丁提出了一个与性能相关的观点,如果速度是一个问题(在一个巨大的数据集上),你可能会想尝试一下。BETWEEN将使用任何可用的索引。
SELECT *
FROM `table_name`
WHERE `date_column` BETWEEN '2010-08-17 00:00:00' AND '2010-08-17 23:59:59';https://stackoverflow.com/questions/3507711
复制相似问题