mysql - 日期范围问题

标签 mysql

我需要检查最近“x”天(例如 30 天)内的条目,但无法使查询正常工作。这是我正在使用的:

  SELECT   CAL_OWNER,
           CAL_TITLE,
           FROM_UNIXTIME (CAL_CREATED, "%m-%d-%y") AS CREATED,
           FROM_UNIXTIME (RANGE_START, "%Y-%m-%d") AS DATE2BESEEN,
           CASE CAL_REFERRAL_TYPE
              WHEN 1 THEN 'NoReferral'
              WHEN 2 THEN 'CareyGuide'
              WHEN 3 THEN 'Education'
              WHEN 4 THEN 'Employment'
              WHEN 5 THEN 'Housing'
              WHEN 6 THEN 'Medical'
              ELSE 'NA'
           END
              AS REFERRALS
    FROM   EGW_CAL
   WHERE   CAL_CREATED BETWEEN (NOW () - '30 day') AND NOW ()
ORDER BY   REFERRALS ASC;

如果我注释掉“WHERE range_start ...”行,查询运行正常,但提取所有数据 但是,如果我运行完整的查询,它不会出错,但没有结果(我在过去 3 周内在 cal_created 列中有 4 个条目)。

如果有人能提供帮助,我将不胜感激

最佳答案

尝试使用 INTERVAL 和 NOW() 或 CURDATE()..

WHERE FROM_UNIXTIME (CAL_CREATED,'%Y-%m-%d') BETWEEN CURDATE() - INTERVAL 30 DAY AND CURDATE()

curdate 只是一天中的日期部分

如果你想包括时间使用NOW()

WHERE FROM_UNIXTIME (CAL_CREATED,'%Y-%m-%d') BETWEEN NOW() - INTERVAL 30 DAY AND NOW()

你也可以创建一个新的日期来使用 between with

WHERE FROM_UNIXTIME (CAL_CREATED,'%Y-%m-%d') BETWEEN DATE_SUB(NOW(), INTERVAL 30 DAY) AND NOW()

来源:http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html

注意:需要正确设置日期格式才能正常工作


完整查询:

SELECT  
    CAL_OWNER,
    CAL_TITLE,
    FROM_UNIXTIME (CAL_CREATED, '%m-%d-%y') AS CREATED_AT,
    FROM_UNIXTIME (RANGE_START, '%Y-%m-%d') AS DATE2BESEEN,
    CASE CAL_REFERRAL_TYPE
        WHEN 1 THEN 'NoReferral'
        WHEN 2 THEN 'CareyGuide'
        WHEN 3 THEN 'Education'
        WHEN 4 THEN 'Employment'
        WHEN 5 THEN 'Housing'
        WHEN 6 THEN 'Medical'
        ELSE 'NA'
    END AS REFERRALS
FROM  EGW_CAL
WHERE FROM_UNIXTIME(CAL_CREATED,'%Y-%m-%d') BETWEEN (NOW() - INTERVAL 30 DAY) AND NOW()
ORDER BY REFERRALS ASC;

关于mysql - 日期范围问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24738733/

相关文章:

sql - 检查 mysql 中的相互关系。一个简单的单表问题

mysql - 如何根据其他列使用按列分组

php - 如何从mysql数据库中获取只有这一年的数据

mysql - Facebook 如何存储和访问文本数据

php - 有没有办法在 laravel 中使用 eloquent 仅在时间戳列中按日期排序?

mysql - MySQL 中的 2 个用户,hosts = "%"和 '"(空)

php - 如何更改08 :00:00 to 08:00 in PHP/MySql

mysql - 如何在SSRS中的特定行集中对sql查询结果表进行分区

java.sql.SQLException : Field 'id' doesn't have a default value 异常

mysql - 一种使用列项进行计数的方法