如何在 POSTGRESQL 中从 DATE 中提取年份
Posted
技术标签:
【中文标题】如何在 POSTGRESQL 中从 DATE 中提取年份【英文标题】:How to Extract Year from DATE in POSTGRESQL 【发布时间】:2016-07-12 05:53:54 【问题描述】:日期是 'YYYY-MM-DD' 文本格式,现在我需要提取必须是数字的年份部分。我需要单步完成此转换,因为我需要在无法创建新变量的其他应用程序中使用。
TO_DATE(t0.AESTDTC,'YYYY-MM-DD'),'YYYY-MM-DD' 我能够转换为日期,但现在我需要从这个日期一步提取年份?谁能帮帮我?
【问题讨论】:
How to extract year and month from date in PostgreSQL?的可能重复extract(year from ...)
。 postgresql.org/docs/current/static/… 但您应该不将日期存储为字符串!
【参考方案1】:
试试
select date_part('year', your_column) from your_table;
或
select extract(year from your_column) from your_table;
【讨论】:
用户可能需要先将字符串转换为日期。 如何使用此 select 语句的输出更新原始日期列? @spacedSparking,在这种情况下,您需要使用 TO_DATE() 或 TO_TIMESTAMP() 中的这些函数来构建日期字符串。通常不是漂亮的景点【参考方案2】:答案是;
select date_part('year', timestamp '2001-02-16 20:38:40') as year,
date_part('month', timestamp '2001-02-16 20:38:40') as month,
date_part('day', timestamp '2001-02-16 20:38:40') as day,
date_part('hour', timestamp '2001-02-16 20:38:40') as hour,
date_part('minute', timestamp '2001-02-16 20:38:40') as minute
【讨论】:
【参考方案3】:这一行解决了我在 postgresql 中的同样问题:
SELECT DATE_PART('year', column_name::date) from tableName;
如果您想要月,那么只需将year
替换为month
也可以解决这个问题。
【讨论】:
这与其他答案有何不同?并且迄今为止的演员表是不必要的 - 至少有一个适当的数据模型,其中column_name
是一个适当的timestamp
【参考方案4】:
从中选择一个,其中:my_date
是yyyy-MM-dd
格式的字符串输入参数:
SELECT EXTRACT(YEAR FROM CAST(:my_date AS DATE));
或
SELECT DATE_PART('year', CAST(:my_date AS DATE));
最好使用CAST
而不是::
,因为可能会与输入参数发生冲突。
【讨论】:
不需要强制转换为日期【参考方案5】:你可以试试to_char(now()::date, 'yyyy')
如果是文本,您必须将文本转换为日期 to_char('2018-01-01'::date, 'yyyy')
参见PostgreSQL
文档Data Type Formatting Functions
【讨论】:
to_char(now()::date, 'yyyy')
可以简化为to_char(now(), 'yyyy')
嗯,这里不用投了。【参考方案6】:
你也可以像这样在新版本的sql中使用,
select year('2001-02-16 20:38:40') as year,
month('2001-02-16 20:38:40') as month,
day('2001-02-16 20:38:40') as day,
hour('2001-02-16 20:38:40') as hour,
minute('2001-02-16 20:38:40') as minute
【讨论】:
这在任何版本的“SQL”中都无效 @a_horse_with_no_name 在 DB2 中有效。我知道,这不是 DB2 问题,只是专门回复您的评论。以上是关于如何在 POSTGRESQL 中从 DATE 中提取年份的主要内容,如果未能解决你的问题,请参考以下文章
如何在 POSTGRESQL 中从两个不同的数据库中检索数据
如何在 C# 中从 Npgsql 4.1.5.0 执行匿名块 PL/pgSQL (PostgreSQL 13)