如何从格式化的列日期中获取特定的日期月份或年份

时间:2018-11-01 02:21:19

标签: mysql sql

我有一个名为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”

谢谢

3 个答案:

答案 0 :(得分:0)

您可以尝试一下。

"indent": [{ "ignoredNodes": ["TemplateLiteral > *"] }]

请查看此discussion

答案 1 :(得分:0)

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

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

这将返回表中第六和第七个字符分别为'09'的所有条目,即,对于您的情况,它将返回表中日期为9月的所有条目。

将其打断,^表示我们要开始查看字符串的开头。 .代表任意字符,{5}意味着在需要重复五次之前发生的任何事情,即.{5}代表五个任意字符。 .*代表要跟随的任意数量的任意字符(可能为零)。

可以为其他情况设计类似的表达式。

答案 2 :(得分:0)

您可以使用Extract函数。

定义:

  

EXTRACT()函数从给定日期提取零件

示例:

对于Month

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

对于Week

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

它可以提取:

  1. MINUTE
  2. 小时
  3. DAY
  4. MONTH
  5. QUARTER
  6. YEAR
  7. SECOND_MICROSECOND
  8. MINUTE_MICROSECOND
  9. MINUTE_SECOND
  10. HOUR_MICROSECOND
  11. HOUR_SECOND
  12. HOUR_MINUTE
  13. DAY_MICROSECOND
  14. DAY_SECOND
  15. DAY_MINUTE
  16. DAY_HOUR
  17. YEAR_MONTH

您可以在此处详细了解文档Extract() Function

编辑

您可以在Extract Function条件下使用此where来解决您的情况:

示例:

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