从SQL中的时间戳,从今天,昨天,本周,本月以及两个日期php mysql之间选择记录

前端之家收集整理的这篇文章主要介绍了从SQL中的时间戳,从今天,昨天,本周,本月以及两个日期php mysql之间选择记录前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
希望这是一个简单的解决方案,但我试图过滤以下数据:

>今天
>昨天
>本周
>本月
>两个日期之间。

数据库获取的日期基本上是一个时间戳。

这是我试过的:

>今天

SELECT n.title,COUNT(*) AS times FROM node_view_count WHERE timestamp > DATE_SUB(NOW(),INTERVAL 1 DAY)

>昨天

SELECT n.title,INTERVAL 7 DAYS)

这不是真的工作

任何想法?

解决方法

如果您仅按日期选择,请根据CURDATE计算(仅返回日期),而不是NOW(返回日期和时间)。这些例子将在日间范围内捕获:

>今天:WHERE timestamp> = CURDATE()
>昨天:WHERE timestamp> = DATE_SUB(CURDATE(),INTERVAL 1 DAY)AND timestamp< CURDATE()
>这个月:WHERE timestamp> = DATE_SUB(CURDATE(),INTERVAL DAYOFMONTH(CURDATE()) – 1天)
> 2013年6月3日和2013年6月7日的两个日期(注意结束日期如何指定为6月8日,6月7日):WHERE timestamp> =’2013-06-03’AND timestamp< “2013年6月8日”
“本周”取决于你开始一周的那一天;我会把它留给你您可以使用DAYOFWEEK函数来调整CURDATE()到适当的范围。

附录:OP的列类型为INTEGER,存储UNIX时间戳,我的答案假定列类型为TIMESTAMP。以下是使用UNIX时间戳记值执行所有相同操作的方法,如果列被索引仍然保持优化(如上所述,如果TIMESTAMP列被索引)

基本上,解决方案是将开始和/或结束日期包含在UNIX_TIMESTAMP函数中:

>今天:WHERE timestamp> = UNIX_TIMESTAMP(CURDATE())>昨天:WHERE timestamp> = UNIX_TIMESTAMP(DATE_SUB(CURDATE(),INTERVAL 1 DAY))和AND时间戳< UNIX_TIMESTAMP(CURDATE())>这个月:WHERE timestamp> = UNIX_TIMESTAMP(DATE_SUB(CURDATE(),INTERVAL DAYOFMONTH(CURDATE()) – 1 DAY))> 2013年6月3日和2013年6月7日的两个日期之间(注意结束日期如何指定为6月8日,6月7日):WHERE timestamp> = UNIX_TIMESTAMP(‘2013-06-03’)AND timestamp< UNIX_TIMESTAMP( '2013年6月8日')

猜你在找的MsSQL相关文章