我想按部分创建DATETIME,但是在某些情况下,这些部分为空。
示例
SELECT TO_DATE(STARTDATEMONTH||'-01-'||STARTDATEYEAR, 'MM-DD-YYYY' ) AS BEGIN_DATE FROM V_MYCC_CNPHISTORY_03
当STARTDATEMONTH列为空时,
获取无效的月份
错误
当STARTDATEYEAR列为空时,我得到:
输入值的日期格式不足
错误
在这种情况下,这些值为null,我想设置一个默认值。有可能还是有解决方法?
我希望已经很好地解释了我的问题。预先感谢
答案 0 :(得分:4)
使用合并:
select TO_DATE(coalesce(STARTDATEMONTH,'01')||'-01-'||coalesce(STARTDATEYEAR, '2019'), 'MM-DD-YYYY' ) AS BEGIN_DATE
from Mytable
Coalesce和nvl是相似的,但是结盟是ansi友好的,并且在找到值时终止。注意,这些值必须是相同的数据类型,例如:
coalesce(stringvalue1, stringvalue2)
答案 1 :(得分:2)
使用coalesce()
:
SELECT TO_DATE(COALESCE(STARTDATEMONTH, '01') || '-01-' || COALESCE(STARTDATEYEAR, '2000')), 'MM-DD-YYYY' ) AS BEGIN_DATE
FROM V_MYCC_CNPHISTORY_03
答案 2 :(得分:0)
您可以尝试以下方法吗?
SELECT TO_DATE(coalesce(STARTDATEMONTH,'01')||'-01-'|| 从开始日期BEGIN_DATE起合并(STARTDATEYEAR,'1700'),'MM-DD-YYYY') V_MYCC_CNPHISTORY_03
答案 3 :(得分:0)
您可以试试这个-
SELECT TO_DATE(NVL(STARTDATEMONTH,'01')||'-01-'||NVL(STARTDATEYEAR,'2019'), 'MM-DD-YYYY' ) AS BEGIN_DATE
FROM V_MYCC_CNPHISTORY_03