【问题标题】:Extract only month and day from date field mysql从日期字段mysql中仅提取月份和日期
【发布时间】:2016-09-07 09:22:23
【问题描述】:

我在数据库中有一个表格,其中包含一些格式为 yyyy-mm-dd 的日期字段

我正在尝试执行一个查询,它只获取从今天起间隔 3 个月的记录。

我已经这样做了

WHERE DATE_SUB(myTable.myField, INTERVAL 3 MONTH) = CURDATE()

它有效,但我的第二步是忽略我的日期字段和来自 curdate() 的年份。

我尝试过EXTRACTDATEFORMAT,但查询不适用于这些功能。

如何修改我的查询?

谢谢

【问题讨论】:

    标签: mysql date


    【解决方案1】:

    条件错误。

    试试这个:

    ...WHERE myTable.myField >= CURDATE() - INTERVAL 3 MONTH...

    编辑:

    根据您的评论:

    通过我的查询,我得到了 dateField 这个日期的所有记录 '2016-12-07'(curdate() 今天是 '2016-09-07'),没关系。但是我 希望该查询还给我日期,该日期有 12 月和 07 月 日,无视年。例如。如果我有“2016-12-07”和“2014-12-07”,我的 查询必须给我两条记录。这是一个每天都会运行的查询

    ...WHERE DATE_FORMAT(myTable.myField,'%m-%d') = 
        DATE_FORMAT((CURDATE() + INTERVAL 3 MONTH),'%m-%d')...
    

    【讨论】:

    • 我需要 3 个月的准确间隔,而不是更多。我已经改变了我的条件,但这并不能回答我关于从日期中提取月份和年份的问题
    • 您可以查看其他答案。但是,如果您澄清提供一些示例输入和预期输出,那么解决您的问题会更容易。我对您的第二个要求感到困惑。
    • 通过我的查询,我得到了 dateField 中包含此日期“2016-12-07”的所有记录(curdate() 今天是“2016-09-07”),这很好。但我希望该查询还给我一个日期,该日期有 12 月和 07 日,忽略年份。例如。如果我有“2016-12-07”和“2014-12-07”,我的查询必须给我两条记录。这是一个每天都会运行的查询
    • 请您尝试编辑部分下的条件吗?
    【解决方案2】:

    使用以下条件将查找从今天起间隔 3 个月的记录。

    WHERE myTable.myField = DATE_SUB(CURDATE(), INTERVAL 3 MONTH) 
    

    【讨论】:

    • 如果你使用=,那么最多一个日期(从今天起3个月前)将满足条件。
    • 是的.. 这就是 SO 想要的.. 我想他想获取一个日期的记录,该日期应该是从今天起正好 3 个月的间隔。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-20
    • 2019-03-20
    • 1970-01-01
    • 2023-01-09
    • 1970-01-01
    • 1970-01-01
    • 2021-09-11
    相关资源
    最近更新 更多