如何在 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_dateyyyy-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)

如何在PHP中从当前日期添加月份[重复]

如何在 swift 中从两天中获取日期名称

在 Perl DBI 中从 PostgreSQL 捕获 NOTICE

Postgresql 中从 Now() 到 Current_timestamp