加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

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

发布时间:2020-12-12 07:03:38 所属栏目:MsSql教程 来源:网络整理
导读:希望这是一个简单的解决方案,但我试图过滤以下数据: 今天 昨天 本周 本月 两个日期之间。 从数据库获取的日期基本上是一个时间戳。 这是我试过的: 今天 SELECT n.title,COUNT(*) AS times FROM node_view_count WHERE timestamp DATE_SUB(NOW(),INTERVAL 1
希望这是一个简单的解决方案,但我试图过滤以下数据:

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

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

这是我试过的:

>今天

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日')

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读