年以 int :2009,2010等方式提供 我想转换此信息为 DATE (1月1日)。
我的解决方案(我更喜欢第一个):
(year::char || '-01-01')::DATE
'0001-01-01' + ((year-1)::char || ' year')::interval
是否有更好的(内置)或更优雅,更快的解决方案? (我目前正在使用 PostgreSQL 8.4 ,但也对更新的版本感兴趣。)
答案 0 :(得分:10)
我认为这是最简单的方法:
to_date(year::varchar, 'yyyy')
答案 1 :(得分:4)
SELECT to_date(2011::text, 'YYYY');
注意:任何基于默认转换的代码都是错误的。有人可以将默认格式 datestyle 更改为某个意外值,此代码将失败。使用to_date或to_timestamp是非常可取的。 to_date 或 to_timestamp 相对昂贵,但它非常强大。
答案 2 :(得分:1)
to_date('01 Jan ' || year, 'DD Mon YYYY')
OR
SELECT (DATE (year || '-01-01'))
参考:http://www.postgresql.org/docs/current/interactive/functions-formatting.html
注意:我没有使用PostgreSQL
答案 3 :(得分:1)
一种可能性:
select year * '1 year'::interval + '0000-01-01'::date;
我喜欢这种方式,因为它避免了文本和整数之间的转换(一旦解析了所有常量)。