【问题标题】:mysql date functionsmysql日期函数
【发布时间】:2012-02-04 00:11:34
【问题描述】:

我在这种格式为 2012-02-1 的数据库表中有一个日期字段。我需要编写 3 个不同的查询:

a.) 我需要检索日期在今天和前 5 天之间的所有字段。
b.) 我需要检索从今天起日期超过 5 天的所有字段。
c.) 我需要检索日期在“5 天前”到“30 天前”之间的所有字段

我可以使用一些内置的mysql功能吗?

处理下面的查询:

SELECT fields 
FROM table 
WHERE date >= CURDATE() - 5

或类似的东西

或者使用 between 子句。我的语法不正确。

SELECT p.status,p.downpayment_date,p.policy_id,i.id,i.policy_type,i.carrier,i.policy_nu‌​mber,i.client_id,c.id,c.client_name FROM pdp_payment AS p,pdp_policy_info AS i,pdp_client_info AS c WHERE p.policy_id=i.id AND i.client_id=c.id AND (((p.status='close pending') OR (p.status='Cancel')) AND (p.downpayment_date BETWEEN ((INTERVAL 5 DAY AND CURDATE()) - (INTERVAL 30 DAY AND CURDATE()))) )

【问题讨论】:

  • 它不是日期时间数据类型。它是日期类型。
  • 欢迎使用 StackOverflow:如果您发布代码、XML 或数据示例,在文本编辑器中突出显示这些行并单击“代码示例”按钮 ({ } ) 在编辑器工具栏上以很好地格式化和语法突出显示它!

标签: mysql sql-date-functions


【解决方案1】:

今天和前 5 天之间的日期。

SELECT  fields FROM table
WHERE date_field BETWEEN CURRENT_DATE - INTERVAL 5 DAY AND CURRENT_DATE

日期小于前 5 天。

SELECT  fields FROM table
WHERE date_field < CURRENT_DATE - INTERVAL 5 DAY

【讨论】:

    【解决方案2】:

    对于日期在今天和前 5 天之间的所有字段。

    SELECT fields FROM table WHERE your_date_field_name BETWEEN CURDATE() - INTERVAL 5 DAY AND CURDATE()

    你可以用类似的方法解决其他问题

    【讨论】:

    • 上述查询在逻辑上是否正确。我收到语法错误。我在顶部转发的那个
    【解决方案3】:

    date 是一个关键字,因此当您将其用作字段名称时,必须将其括在反引号 ` 中,否则会出现解析错误。

    要得到你想要的范围:

    WHERE `date` BETWEEN DATE_ADD(NOW(),INTERVAL -30 DAY) AND DATE_ADD(NOW(),INTERVAL -5 DAY)
    

    【讨论】:

    • 是的,我得到了日期部分。但我无法获得 between 语法。例如。我想要“5 天前”到“30 天前”之间的日期
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-24
    相关资源
    最近更新 更多