我正在尝试根据日期格式创建三列。
我的user.updated_at = 1521533490
我想分别获得年,月和日,并将这些格式化的值放到列中,例如:
年 - > 2018年,月 - > 11,天 - > 23
有人知道我如何才能在pgSQL
中执行此操作?
答案 0 :(得分:3)
我想分别获得年,月和日,并将这些格式化的值放到列
不要那样做。
根据您的应用,使用date
或timestamp
类型的单一列。并非三列的每个组合都是有效日期。但是,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功能的更多信息。