SQL:尝试从日期中提取年份和月份

时间:2015-10-06 02:31:38

标签: sql oracle

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

日期存储为DD-mon-YYYY。

我有:

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

3 个答案:

答案 0 :(得分:0)

在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

答案 1 :(得分:0)

In case of date type datatype in your table, you can use date part function of SQL

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

答案 2 :(得分:0)

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');

您可以使用此

之间的功能
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';

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

请注意,使用第二种方法可以替换= with in for multiple months:

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

这可能是最好的方法。

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