首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在MySQL中从TimeStamps获取最近'X‘天数的记录

在MySQL中从TimeStamps获取最近'X‘天数的记录
EN

Stack Overflow用户
提问于 2018-01-09 08:54:46
回答 1查看 388关注 0票数 0

尝试利用MySQL的日期和时间函数。目前我有一个表格,显示了一个邮递员在过去5天的路线。这些值作为时间戳存储在我的数据库中。我要这个邮递员过去3天去过的所有街道地址。

到目前为止,我可以执行以下查询:

代码语言:javascript
复制
 "SELECT RouteEndTime
  FROM Mailman GROUP BY RouteEndTime
  HAVING DATEDIFF(MAX(RouteEndTime), RouteEndTime) <= 3;"

但是我只得到了所有15行的所有RouteEnd值

我正在看这个资源列表:

https://www.w3schools.com/sql/sql_ref_mysql.asp

在MySQL Date函数下,但是没有函数可以完成我需要它做的事情。

有没有一个函数可以用来获取他最近3天访问的所有街道地址(从我数据库中最近的日期开始)我正在寻找的答案基本上是1月5日、4日和3日的所有街道地址名称。

代码语言:javascript
复制
MailManID  | Street Address |  RouteStartTime        |  RouteEndTime

54         |  'Apple St'    |  '2018-01-05 09:00:00' | '2018-01-05 09:05:00'
54         |  'Bat St'      |  '2018-01-05 09:30:00' | '2018-01-05 09:35:00'
54         |  'Cat St'      |  '2018-01-05 09:45:00' | '2018-01-05 09:50:00'

54         |  'Kite St'     |  '2018-01-04 09:00:00' | '2018-01-04 09:05:00'
54         |  'Lemon St'    |  '2018-01-04 09:30:00' | '2018-01-04 09:35:00'
54         |  'Muppet St'   |  '2018-01-04 09:45:00' | '2018-01-04 09:50:00'

54         |  'Luke St'     |  '2018-01-03 09:00:00' | '2018-01-03 09:05:00'
54         |  'Ben St'      |  '2018-01-03 09:30:00' | '2018-01-03 09:35:00'
54         |  'Cow St'      |  '2018-01-03 09:45:00' | '2018-01-03 09:50:00'

54         |  'Hello St'    |  '2018-01-02 09:00:00' | '2018-01-02 09:05:00'
54         |  'Igloo St'    |  '2018-01-02 09:30:00' | '2018-01-02 09:35:00'
54         |  'Jump St'     |  '2018-01-02 09:45:00' | '2018-01-02 09:50:00'

54         |  'Yellow St'   |  '2018-01-01 09:00:00' | '2018-01-01 09:05:00'
54         |  'Blue St'     |  '2018-01-01 09:30:00' | '2018-01-01 09:35:00'
54         |  'Red St'      |  '2018-01-01 09:45:00' | '2018-01-01 09:50:00'

我想返回如下内容:

代码语言:javascript
复制
'Apple St' '2018-01-05 09:00:00' '2018-01-05 09:05:00'
'Bat St' '2018-01-05 09:30:00' '2018-01-05 09:35:00'
'Cat St''2018-01-05 09:45:00' '2018-01-05 09:50:00'
'Kite St''2018-01-04 09:00:00' '2018-01-04 09:05:00'
'Lemon St''2018-01-04 09:30:00' '2018-01-04 09:35:00'
'Muppet St''2018-01-04 09:45:00' '2018-01-04 09:50:00'
'Luke St''2018-01-03 09:00:00' '2018-01-03 09:05:00'
'Ben St''2018-01-03 09:30:00' '2018-01-03 09:35:00'
'Cow St''2018-01-03 09:45:00' '2018-01-03 09:50:00'
EN

回答 1

Stack Overflow用户

发布于 2018-01-09 09:51:24

关于MySQL的一个更好的信息来源是straight from their own documentation.在该列表中,您将看到DATEDIFF(),它给出了两个日期之间的天数差。

代码语言:javascript
复制
... WHERE DATEDIFF(NOW(), RouteStartTime) <= 3

或者类似的东西会让你得到你想要的东西。

如果您希望恰好从三天到第二天,则只需使用时间戳会更容易:

代码语言:javascript
复制
... WHERE (CURRENT_TIMESTAMP() - 60*60*24*3) > UNIX_TIMESTAMP(RouteStartTime)

(60*60*24*3为三天内的秒数)

要从数据库中的最后一个时间戳测量您的三天,需要使用MAX()函数。从this answer中抄袭,我们看到WHERE不允许MAX() (除了作为子查询,但HAVING将:

代码语言:javascript
复制
... HAVING DATEDIFF(MAX(RouteStartTime), RoutStartTime) <= 3

HAVING应该用于聚合函数,但它适用于没有GROUP BY子句的MAX()

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48160094

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档