【问题标题】:Select date range on mysql timestamp在mysql时间戳上选择日期范围
【发布时间】:2012-11-16 14:43:27
【问题描述】:

我正在尝试以下方法,但没有得到任何结果:

SELECT *
FROM users_test
WHERE dateadded >= UNIX_TIMESTAMP('2012-02-01 00:00:00') 
AND dateadded <  UNIX_TIMESTAMP('2012-11-01 00:00:00');

但我知道有些列的日期在该范围内,例如

2012-05-11 17:10:08

有没有更好的方法来做到这一点?

最终我想搜索多个参数,尽管不是同时搜索,例如今天、昨天、上周、上个月等,还有日期范围和月份范围

【问题讨论】:

  • 您的列是将值存储为 UNIX 时间戳还是时间戳(例如 2012-05-11 17:10:08)?您粘贴了该范围内的列示例,但它不是 UNIX 时间戳,这让我感到奇怪。您正在将日期与 UNIX 时间戳进行比较,您可能只需要与时间戳进行比较。

标签: mysql sql


【解决方案1】:

你试过了吗?

SELECT *
FROM users_test
WHERE dateadded >= '2012-02-01 00:00:00'
AND dateadded <  '2012-11-01 00:00:00'

就我所见,您的表似乎以您想要查找的相同方式存储数据 (2012-05-11 17:10:08),因此在这种情况下您不需要 UNIX_TIMESTAMP。

我还可以看到您想从结果中排除第二个日期(因为您使用的是&lt; 而不是&lt;=),否则使用WHERE dateadded BETWEEN '2012-02-01 00:00:00' AND '2012-11-01 00:00:00' 也可以...

【讨论】:

    【解决方案2】:

    只需使用 SQL BETWEEN 关键字。就这样。

    【讨论】:

      【解决方案3】:

      试试这个:

      SELECT * FROM 
            users_test
       WHERE
           dateadded BETWEEN '2012-02-01 00:00:00' AND '2012-11-01 00:00:00'
      

      【讨论】:

        【解决方案4】:
        SELECT * FROM table_name WHERE DATE(date_field) between '2015-05-10' and '2015-05-21`
        

        【讨论】:

          猜你喜欢
          • 2011-04-27
          • 2012-04-12
          • 1970-01-01
          • 2013-01-10
          • 2011-11-16
          • 1970-01-01
          • 2012-08-06
          • 2019-04-28
          • 1970-01-01
          相关资源
          最近更新 更多