使用格式化日期创建新列

时间:2014-04-09 18:18:53

标签: postgresql

我有一个名为'date'的列格式化为日期类型,其值为 2007-08-24T00:00:00Z

我想用一个重新格式化的字符串填充一个名为date2的新列 2007年8月24日

以下是我对此的尝试。我错过了什么?

更新myTable SET date2 = date_part('Mon DD,YYYY',date);

3 个答案:

答案 0 :(得分:1)

如评论中所述,如果您的列是one of the built-in date/time types - datetimestamp等,那么它不会以任何特定字符串格式存储在数据库中,而是作为抽象数据。这是您应该在数据库中存储日期的唯一方法,因为它允许您直接对数据执行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()放入函数中,或在表格上创建适当的视图。