【问题标题】:how to get specific day month or year from a column date formated如何从列日期格式中获取特定的日期月份或年份
【发布时间】:2018-11-01 10:50:39
【问题描述】:

我有这个名为 PODate 的列,带有日期格式。

  1. “2018-09-15”
  2. “2018-09-16”
  3. “2018-09-17”
  4. “2018-10-19”
  5. “2018-10-20”

我想从格式化的列日期中获取特定的日期或月份甚至年份。但我不知道该查询使用什么函数。

我想从选定的月份进行查询。或从一周中选择哪一天。

只有当我选择第 9 个月时,输出才会返回只有第 9 个月的日期,即。

  1. “2018-09-15”
  2. “2018-09-16”
  3. “2018-09-17”

谢谢

【问题讨论】:

  • 您建议了几种不同类型的输出。您可以编辑您的问题并显示您想要的特定输出吗?

标签: mysql sql


【解决方案1】:

你可以试试这个。

SELECT * FROM yourtable
WHERE CONVERT(DATETIME, FLOOR(CONVERT(FLOAT, date))) = '2018-09-15'

请查看此discussion

【讨论】:

    【解决方案2】:

    您可以在 MySQL 中使用regular expressions。请参阅文档here

    SELECT * FROM MyTable WHERE date REGEXP '^.{5}09.*'
    

    这将返回表格中第六个和第七个字符具体为“09”的所有条目,即在您的情况下,它将返回您的表格中日期在 9 月某处的所有条目。

    分解它,^ 标记我们要开始查看字符串的开头。 . 代表任意字符,{5} 表示之前发生的任何事情都需要重复五次,即.{5} 代表五个任意字符。 .* 代表任意数量(可能为零)的任意字符。

    可以为其他场景制作类似的表达式。

    【讨论】:

      【解决方案3】:

      你可以使用Extract函数..

      定义:

      EXTRACT() 函数从给定日期提取部分

      例子:

      对于Month

      SELECT EXTRACT(MONTH FROM "2018-09-15");
      

      对于Week

      SELECT EXTRACT(WEEK FROM "2018-09-16");
      

      它可以提取:

      1. 分钟
      2. 小时
      3. 季度
      4. 年份
      5. SECOND_MICROSECOND
      6. MINUTE_MICROSECOND
      7. MINUTE_SECOND
      8. HOUR_MICROSECOND
      9. HOUR_SECOND
      10. HOUR_MINUTE
      11. DAY_MICROSECOND
      12. DAY_SECOND
      13. DAY_MINUTE
      14. DAY_HOUR
      15. YEAR_MONTH

      你可以在这里阅读更多文档Extract() Function

      编辑

      您可以在where 条件中使用此Extract Function 来处理您的情况:

      例子:

      select
          your_date
      from
          your_table
      where
          extract(MONTH FROM your_date) = '9'
      

      【讨论】:

        猜你喜欢
        • 2017-01-19
        • 1970-01-01
        • 2021-12-16
        • 1970-01-01
        • 2012-02-16
        • 1970-01-01
        • 1970-01-01
        • 2020-12-19
        • 1970-01-01
        相关资源
        最近更新 更多