mysql - 如何比较 MySQL 中的日期?

标签 mysql datetime date time intervals

我有一个表(名为 tasks),其列 created_at 基本上包含 UNIX 时间戳。

我只需要选择那些在指定时间间隔内创建的结果。

时间间隔为今天明天本周本月

我认为如果我将时间戳转换为 YYYY-MM-DD HH:MM:SS 格式,MySQL 可以处理它。

此外,我认为我也需要在那里使用 BETWEEN

所以,我传递时间戳来查询和比较(检查?)它是否在指定的时间间隔内与存储在数据库中的时间戳。要转换,我需要使用 FROM_UNIXTIME,对吗?

如何指定这些间隔?感谢您的建议!

最佳答案

您需要转换 UNIX_TIMESTAMP。

查询

SELECT * FROM tasks
WHERE created_at BETWEEN UNIX_TIMESTAMP(DATE_SUB(now(),INTERVAL 1 DAY)) 
                     AND UNIX_TIMESTAMP(now())

您可以通过以下方式更改周、月等的间隔:

INTERVAL 1 WEEK
INTERVAL 1 MONTH
INTERVAL 1 YEAR

MySQL 会自动考虑月份和闰年等的长度。

在上面的查询中,MySQL 将可以使用索引,从而加快速度。
确保在您的列上使用函数,因为在那种情况下 MySQL 无法在该字段上使用索引,从而导致严重的缓慢。

编码恐怖,很慢

SELECT * FROM tasks 
WHERE FROM_UNIXTIME(created_at) BETWEEN DATE_SUB(now(),INTERVAL 1 DAY) 
                                    AND now()

参见:http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-add

关于mysql - 如何比较 MySQL 中的日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7915667/

相关文章:

java - MySQL 中保存的日期无效

C# List 按时间倒序排序

mysql - 如何对三个 mysql 表中的列进行求和?

PHP/MySQL - 使用 session 数据更新表数据

MySQL 在连接表时选择 SUM

javascript - XDate 与 Datejs

python pandas 读取时间戳

java - 如何从Java中的字符串中识别日期

c# - 如何在 C# 中将日期转换为 MM/DD/YY 格式

mysql - 搜索文档内容的建议 - Windows Search 好用吗?简单的MySQL?