daG*_*vis 1 mysql time datetime date intervals
我有表(命名tasks
)与列created_at
,基本上,包含UNIX时间戳.
我只需要选择在指定的时间间隔内创建的结果.
间隔today
,tomorrow
,this week
和this month
.
我认为如果我将时间戳转换为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())
Run Code Online (Sandbox Code Playgroud)
您可以通过执行以下操作来更改周,月等的间隔:
INTERVAL 1 WEEK
INTERVAL 1 MONTH
INTERVAL 1 YEAR
Run Code Online (Sandbox Code Playgroud)
MySQL将自动考虑月份和闰年等的长度.
在上面的查询中,MySQL将能够使用索引,加速了很多事情.
确保不要在列上使用函数,因为在这种情况下,MySQL不能在该字段上使用索引,从而导致严重的缓慢.
编码恐怖,很慢
SELECT * FROM tasks
WHERE FROM_UNIXTIME(created_at) BETWEEN DATE_SUB(now(),INTERVAL 1 DAY)
AND now()
Run Code Online (Sandbox Code Playgroud)
请参阅:http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-add
归档时间: |
|
查看次数: |
3536 次 |
最近记录: |