【问题标题】:select rows from last month using unix使用 unix 选择上个月的行
【发布时间】:2019-03-06 00:58:33
【问题描述】:

我正在尝试从上个月的表中选择所有行,基本上就像这个人在问的那样:MySQL select all rows from last month until (now() - 1 month), for comparative purposes

但我在日期列中使用的是 unix 时间戳,所以日期是这样的:1538330400

于是我开始使用(选择日期等于或早于今天的行):

SELECT * FROM ns_trainingame t WHERE t.date <= UNIX_TIMESTAMP(NOW());

它工作得很好。

然后,经过一些研究,我发现有些人使用一些代码来解决我的问题。

SELECT * 
FROM ns_trainingame t 
WHERE t.date >= UNIX_TIMESTAMP(DATE_ADD(LAST_DAY(DATE_SUB(NOW(), INTERVAL 2 MONTH)), INTERVAL 1 DAY)) 
  AND t.date <= UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 1 MONTH))");

但是在这些条件下给了我错误的行数。

我能做什么?

【问题讨论】:

  • 仅供参考 UNIX_TIMESTAMP(NOW())UNIX_TIMESTAMP() 相同
  • 您是要获取上个月(8 月)还是上个月(8 月 30 日至 9 月 30 日)的结果?
  • @Nick(8 月 30 日至 9 月 30 日)

标签: php mysql unix-timestamp


【解决方案1】:

如果您想获得上个月的所有结果(截至发帖时间为 8 月 30 日至 9 月 30 日),这可能是最简单的方法。使用FROM_UNIXTIME 将您的时间戳转换为日期,然后您可以直接将其与其他日期进行比较:

SELECT * 
FROM ns_trainingame t 
WHERE FROM_UNIXTIME(t.date) BETWEEN CURDATE() - INTERVAL 1 MONTH AND CURDATE()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-18
    • 2021-07-19
    相关资源
    最近更新 更多