如何在PostgreSql中从秒开始获取年,月和日?

时间:2018-03-21 10:40:27

标签: sql database postgresql date

我正在尝试根据日期格式创建三列。

我的user.updated_at = 1521533490

我想分别获得年,月和日,并将这些格式化的值放到列中,例如:

年 - > 2018年,月 - > 11,天 - > 23

有人知道我如何才能在pgSQL中执行此操作?

3 个答案:

答案 0 :(得分:3)

  

我想分别获得年,月和日,并将这些格式化的值放到列

不要那样做。

根据您的应用,使用datetimestamp类型的单一列。并非三列的每个组合都是有效日期。但是,date 类型的单个列中的每个值都将成为有效日期。

如果您需要单独使用日期部分,请使用PostgreSQL's date/time functions

答案 1 :(得分:0)

尝试这个approche获取不同的参数,然后你可以做任何你想做的事情:

SELECT to_timestamp(1521533490); //2018-03-20T08:11:30.000Z
SELECT to_char(to_timestamp(1521533490), 'HH'); // 08 Hour
SELECT to_char(to_timestamp(1521533490), 'MI'); // 11 Minutes
SELECT to_char(to_timestamp(1521533490), 'SS'); // 30 Seconds
SELECT to_char(to_timestamp(1521533490), 'DD'); // 20 Day
SELECT to_char(to_timestamp(1521533490), 'Mon'); // MAR Month
SELECT to_char(to_timestamp(1521533490), 'YYYY'); // 2018 Year

答案 2 :(得分:0)

使用EXTRACT功能。

SELECT to_timestamp(updated_at) "Date",
EXTRACT(YEAR FROM (to_timestamp(updated_at))) "Year",
EXTRACT(MONTH FROM (to_timestamp(updated_at))) "Month",
EXTRACT(DAY FROM (to_timestamp(updated_at))) "Day"
FROM users

输出

Date                  Year  Month  Day
2018-03-20T08:11:30Z  2018  3      20

SQL小提琴:http://sqlfiddle.com/#!15/afe0e/15/0

有关EXTRACT功能的更多信息。