我想在我的sql查询中只选择年份部分的时间戳

问题描述:

我想在我的sql查询中只选择年份部分的时间戳。数据的格式如下:我想在我的sql查询中只选择年份部分的时间戳

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

我希望我的查询结果只返回“2016”。

+1

使用的是什么DBMS? – Siyual

+0

你使用的是什么dbms?你尝试过搜索吗?这很容易完成。 –

+0

在标准的SQL中,这将是'提取(年份from_column)' –

如果SQL Server,做

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

,你会得到2016如果其他RDBMS,也许类似的东西。

希望有所帮助。

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

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

进一步的细节:postgres documentation

SQL服务器

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

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 

甲骨文

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