首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查询mysql:从时间戳中选择

查询mysql:从时间戳中选择
EN

Stack Overflow用户
提问于 2010-08-18 07:15:17
回答 3查看 4K关注 0票数 1

我想从表中选择与特定日期对应的所有行。我将时间戳存储在模式2010-08-18 04:43:00中。如果我想选择一天内的所有行,如何查询表?

我能想到的一种方法是获取当天的时间戳,将其转换为Unix时间戳,然后查询表。但这听起来似乎有很多工作要做。有没有更简单的替代方案?

在此之前非常感谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 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上面的方法是很好的。

票数 1
EN

Stack Overflow用户

发布于 2010-08-18 07:19:35

代码语言:javascript
复制
SELECT *
FROM `table_name`
WHERE `date_column` LIKE '2010-08-17 %';

或者:

代码语言:javascript
复制
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

票数 1
EN

Stack Overflow用户

发布于 2010-08-18 07:48:53

很简单:

代码语言:javascript
复制
SELECT *
FROM `table_name`
WHERE DATE(`date_column`) = '2010-08-17';

请注意,只有当您的date_column是TIMESTAMP或DATETIME类型时,它才是有效的。

编辑:既然马丁提出了一个与性能相关的观点,如果速度是一个问题(在一个巨大的数据集上),你可能会想尝试一下。BETWEEN将使用任何可用的索引。

代码语言:javascript
复制
SELECT *
FROM `table_name`
WHERE `date_column` BETWEEN '2010-08-17 00:00:00' AND '2010-08-17 23:59:59';
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3507711

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档