【发布时间】:2011-05-19 08:43:28
【问题描述】:
我有一个 (Postgre)SQL 表,其中日期是这样存储的
YEAR B-MONTH E-MONTH
2000 01 05
2004 03 06
2010 07 12
2004 01 12
如何将这些转换为“真实”日期字段?我希望输出看起来像这样:
BEGIN END
2000-01-01 2000-05-31
2004-03-01 2004-06-30
2010-07-01 2010-12-31
2004-01-01 2004-12-31
提前谢谢你!
[解决方案]
这是我最终得到的解决方案:
开始
TO_DATE(TO_CHAR("YEAR", '9999') || TO_CHAR("B-MONTH", 'FM00') || '01', 'YYYYMMDD') AS BEGIN
结束
CAST(TO_DATE(TO_CHAR("YEAR", '9999') || TO_CHAR("E-MONTH", 'FM00') || '01', 'YYYYMMDD') + INTERVAL ('1 MONTH - 1 DAY') AS DATE) AS END
[编辑]
它也是这样工作的:
开始
TO_DATE(TO_CHAR("YEAR", '9999') || TO_CHAR("B-MONTH", 'FM00'), 'YYYYMM') AS BEGIN
结束
CAST(TO_DATE(TO_CHAR("YEAR", '9999') || TO_CHAR("E-MONTH", 'FM00'), 'YYYYMM') + INTERVAL ('1 MONTH - 1 DAY') AS DATE) AS END
【问题讨论】:
-
请贴出你目前写的代码。人们通常不喜欢只为您编写代码。事实上,这是一个工作描述,而不是一个问题。
-
感谢您的建议。我真的不知道如何开始,因为我不知道将整数值转换为日期部分的函数。但是请不要像我希望你为我编写整个事情一样阅读我的问题。如果有人向我指出一个有用的功能,我会很高兴。
标签: sql postgresql date