我有一个名为'date'的列格式化为日期类型,其值为 2007-08-24T00:00:00Z
我想用一个重新格式化的字符串填充一个名为date2的新列 2007年8月24日
以下是我对此的尝试。我错过了什么?
更新myTable SET date2 = date_part('Mon DD,YYYY',date);
答案 0 :(得分:1)
如评论中所述,如果您的列是one of the built-in date/time types - date
,timestamp
等,那么它不会以任何特定字符串格式存储在数据库中,而是作为抽象数据。这是您应该在数据库中存储日期的唯一方法,因为它允许您直接对数据执行a whole range of operations。
要格式化此类值,请在选择数据时应用适当的格式 。我强烈建议不要在任何地方存储这个格式化的字符串 - 它不会为您的数据库添加任何值,因为任何格式都可以随时计算,但这意味着您将来需要管理重复数据。
formatting functions采用略微不寻常的说明符格式;在你的情况下,我相信你想要'FMMonth Dth, YYYY'
:
SELECT
to_char("date", 'FMMonth Dth, YYYY') as formatted_date
FROM
my_table;
作为替代技巧,如果你碰巧使用PHP,你可以选择日期作为Unix时间戳,然后使用PHP函数格式化:
SELECT
extract(epoch from "date") as unix_date
FROM
my_table;
答案 1 :(得分:0)
这就是诀窍
更新myTable SET date2 = to_char(日期,'月DD,YYYY')
答案 2 :(得分:0)
如果您出于某种原因厌倦了调用日期格式设置功能,则可以将extract()
或to_char()
放入函数中,或在表格上创建适当的视图。