【问题标题】:SQL: Trying to extract year and month from a dateSQL:尝试从日期中提取年份和月份
【发布时间】:2015-10-06 02:31:37
【问题描述】:

我正在尝试从 SQL 中存储的日期中提取年份和月份。我看过很多精选示例,但我试图在 where 子句中使用它。

日期存储为 DD-mon-YYYY。

我有:

where s.stored_date=to_date('Dec 2015','mon-YYYY');

【问题讨论】:

标签: sql oracle


【解决方案1】:

在 MySQL 中,您可以像这样使用内部函数 str_to_date() 和 date_format():

where s.stored_date = date_format(str_to_date('Dec 2015', '%b %Y'),'%d-%b-%Y')

以上内容需要进行一些调整,因为如果您的日期存储为 DD-mon-YYYY 但您正在解析 mon-YYYY,除非 DD 为 00,否则您将找不到匹配项。所以你可能想看看手册来修复格式:

https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-format

【讨论】:

  • 谢谢。我是新手。 :)
【解决方案2】:

如果你的表中有日期类型的数据类型,你可以使用SQL的日期部分函数

datename(year,colName) as [Year]
datename(Month,colName) as [Month]

【讨论】:

    【解决方案3】:
    create table s (stored_date DATE);
    insert into s values ('01-JAN-2015');
    insert into s values ('01-DEC-2015');
    insert into s values ('02-DEC-2015');
    insert into s values ('01-JUN-2015');
    insert into s values ('01-MAY-2015');
    

    您可以为此使用 between 功能

    select * from s where s.stored_date between to_date('Dec 2015','mon-YYYY') and to_date('Jan 2016','mon-YYYY');
    

    或者

    select * from s where to_char(s.stored_date,'Mon-YYYY')='Dec-2015';
    

    您可以将其转换为字符并以这种方式提取。

    注意第二种方法你可以用 in 替换多个月的 =:

    select * from s where to_char(s.stored_date,'Mon-YYYY') IN ('Dec-2015', 'Jun-2015');
    

    这可能是最好的方法。

    这个的sqlfiddle: http://sqlfiddle.com/#!4/3e7cf/1

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-10-02
      • 2018-02-16
      • 1970-01-01
      • 1970-01-01
      • 2021-04-02
      • 1970-01-01
      相关资源
      最近更新 更多