我试图在我的SQL查询中只选择时间戳的年份部分

时间:2016-12-14 21:35:13

标签: sql

我试图在我的SQL查询中仅选择时间戳的年份部分。数据采用以下格式:

2016-12-13 23:59:58
2016-12-07 23:59:58
2016-12-01 23:59:58

我希望我的查询结果只返回" 2016"例如。

3 个答案:

答案 0 :(得分:0)

如果是SQL Server,请执行

SELECT DATEPART(year,'2016-12-13 23:59:58')

你将获得2016年。如果是其他一些RDBMS,可能是类似的东西。

希望有所帮助。

答案 1 :(得分:0)

在Postgres中有date_part函数可以完成这项工作。第一个参数是需要提取的部分,第二个参数是时间戳:

例如: select date_part('year', timestamp '2001-02-16 20:38:40');

了解更多详情:postgres documentation

答案 2 :(得分:0)

SQL Server

如果遇到问题,请确保您的列实际上是时间戳,而不仅仅是字符串:

SELECT 
DATEPART(YEAR, CONVERT(DATETIME, '2016-12-13 23:59:58')) as YR
FROM TABLENAME

在实际查询中,您可能希望将'2016-12-13 23:59:58'替换为列名。

SELECT 
DATEPART(YEAR, CONVERT(DATETIME, DateColumn)) as YR
FROM TABLENAME

<强>的Oracle

SELECT 
EXTRACT(YEAR FROM (TO_DATE('2016-12-13 23:59:58', 'YYYY-MM-DD HH24:MI:SS') )) as YR
FROM TABLENAME

类似地

SELECT 
EXTRACT(YEAR FROM (TO_DATE(DateColumn, 'YYYY-MM-DD HH24:MI:SS') )) as YR
FROM TABLENAME