我正在尝试从SQL中的存储日期中提取年份和月份。我已经看过很多选择的例子,但我试图在where子句中使用它。
日期存储为DD-mon-YYYY。
我有:
where s.stored_date=to_date('Dec 2015','mon-YYYY');
答案 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