当前位置: 首页 > 面试题库 >

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

陶朝明
2023-03-14
问题内容

希望这是一个简单的解决方案,但我正在尝试过滤以下数据:-

  • 今天
  • 昨天
  • 本星期
  • 这个月
  • 在两个日期之间。

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

这是我尝试的:

  • 今天

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

    SELECT n.title, COUNT(*) AS times FROM node_view_count WHERE timestamp > DATE_SUB(NOW(), 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 DAY)
  • 在2013年6月3日至2013年6月7日这两个日期之间(请注意如何将结束日期指定为6月8日,而不是6月7日): WHERE timestamp >= '2013-06-03' AND timestamp < '2013-06-08'

“本周”取决于您开始一周的哪一天;我留给你。您可以使用该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 timestamp < 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-06-08')


 类似资料:
  • 问题内容: 我有一个像这样的Oracle SELECT查询: 我的意思是,我想选择字段“ date_enter”今天所在的所有位置。我已经尝试过类似的操作,但是没有用。 忠告: 我不能使用TO_CHAR,因为它变得太慢。 问题答案: 假设是一个字段: 默认情况下,该功能会删除时间部分,因此您可以在今天早晨午夜12点前使用该功能。 如果您特别想坚持使用,而不是,则可以执行以下操作: 是包容性的,因此

  • 问题内容: 如何通过使用PHP中的strtotime()函数获取今天,昨天和前天的12点时间戳? 12点是一个变量,可由用户更改。 问题答案:

  • 我有两次约会。一个是以YYYYMMDD格式从其他应用程序的表中检索的,第二个日期是本地时间,我需要这两个日期之间的天数/月/年。 我试过了 但这给了我一些乱七八糟的数字。 变量$t=Fri Dec31 00:00:00 9999 变量$今天=Wed Feb19 14:40:55 2020 产出:25182094888 有什么想法吗?提前谢谢。

  • 如果条目的时间戳与今天的日期匹配,我想从SQLite表中选择所有条目。 我查询SQLite数据库如下: 这是我最近的行为,但我不希望在过去24小时内选择所有条目。我只想选择今天的日期是否与时间戳匹配。 如何仅选择表中时间戳与今天日期匹配的行。 数据库中的日期格式为:2014-07-05 12:59:35。

  • 问题内容: 如何显示和计算日期为昨天的值?我曾经在数据库中插入日期。例: 我想显示表中存在多少个具有多个URL的URL,以及昨天有多少个URL被访问过。结果示例: 我已经有了获取昨天日期的想法,但是我没有一个想法来计算昨天存在一个URL的次数和计算表中存在URL的次数。 问题答案: 获取昨天日期的最简单最佳方法是: 您的查询将是: 出于好奇,为您提供满足条件的行 数 的原因(否则将需要繁琐且冗长的

  • 本文向大家介绍mysql查询今天、昨天、近7天、近30天、本月、上一月的SQL语句,包括了mysql查询今天、昨天、近7天、近30天、本月、上一月的SQL语句的使用技巧和注意事项,需要的朋友参考一下 mysql查询今天,昨天,近7天,近30天,本月,上一月数据的方法分析总结: 话说有一文章表article,存储文章的添加文章的时间是add_time字段,该字段为int(5)类型的,现需要查询今天添