2012-11-19 64 views
4

我想创建一个只从选定日期获取年份的查询。即select ASOFDATE from PSASOFDATE;返回11/15/2012,但我只想要2012。我怎样才能得到这一年?我知道YEAR函数可以使用,但我不知道如何。从一个日期提取年份的SQL查询

+1

问题,从[MySQL的标签]重新标记。这在这个问答中引入了很多混乱。知道这一点,答案就不那么令人惊讶了。 – Palec

回答

0
SELECT YEAR(ASOFDATE) FROM PASOFDATE 

Editted: 在anycase如果你的日期是一个字符串,让我们将它转​​换成一个适当的日期格式。并选择其中的一年。

SELECT YEAR(STR_TO_DATE(ASOFDATE, '%d-%b-%Y')) FROM PSASOFDATE 

既然你想蟾蜍,你能检查下面的代码:

SELECT EXTRACT (TO_DATE(YEAR, 'MM/DD/YY') FROM ASOFDATE) FROM PSASOFDATE; 

Reference:

+1

这不起作用。它说'无效的标识符'... –

+0

为了您更好地了解[日期,时间相关的操作](http://dev.mysql.com/doc/refman/5.5/en/date-and-time -functions.html),请看看这个链接。希望从长远来看有所帮助:) – bonCodigo

+0

这是因为我拼错你的表名我猜...你可以试试'DATE(日期列)'和你正确的列名和表名:) – bonCodigo

2

只要传递COLUMNNAME作为YEAR

SELECT YEAR(ASOFDATE) from PSASOFDATE; 

参数的另一个是使用DATE_FORMAT

SELECT DATE_FORMAT(ASOFDATE, '%Y') from PSASOFDATE; 

UPDATE 1

我敢打赌值的varchar格式为MM/DD/YYYY,它是那样的话,

SELECT YEAR(STR_TO_DATE('11/15/2012', '%m/%d/%Y')); 

不得已如果所有查询失败

使用SUBSTRING

SELECT SUBSTRING('11/15/2012', 7, 4) 
+0

这不起作用。它说'无效标识符'... –

+0

第二个使用DATE_FORMAT的怎么样? –

+1

“ASOFDATE”的数据类型是什么?以及该值的格式如何? –

-3

在SQL Server中,你可以使用:

SELECT DATEPART(year, ASOFDATE) FROM PSASOFDATE 

这不尽管如此,Oracle仍然在努力。

10

这个怎么样?

SELECT TO_CHAR(ASOFDATE, 'YYYY') FROM PSASOFDATE 
+0

它返回一个字符串不是一个数字,坏主意 –

15

这为我工作:为[标签:甲骨文]:

SELECT EXTRACT(YEAR FROM ASOFDATE) FROM PSASOFDATE; 
相关问题