【问题标题】:Cast column TO_DATE with two and four digit years用两位数和四位数年份投射 TO_DATE 列
【发布时间】:2023-01-24 00:54:55
【问题描述】:

我有一张桌子multi_app_documentation.nsma1_ans员工以两位数和四位数字年份格式输入日期。当我尝试使用 TO_DATE 转换它时,我的 WHERE 语句中出现错误:

错误:“DD”的无效值“/1” 详细信息:值必须是整数。

当员工不使用四位数年份时,我怎样才能让我的查询工作?他们可以输入 01232023 或 01/23/23。我假设我必须编写一个函数。作为 Postgresql 的新手,这不是我以前没有做过的事情。任何帮助深表感谢。

SELECT 
CASE WHEN
multi_app_documentation.nsma1_code = 'DATE' 
THEN TO_DATE(multi_app_documentation.nsma1_ans, 'MMDDYYYY') END AS "Procedure Date", 

    ' ' AS "Case Confirmation Number",
    ip_visit_1.ipv1_firstname AS "Patient First", 
    ip_visit_1.ipv1_lastname AS "Patient Last", 
    visit.visit_sex AS "Patient Gender", 
    TO_CHAR(visit.visit_date_of_birth, 'MM/DD/YYYY') AS "DOB", 
    visit.visit_id AS "Account Number", 
    visit.visit_mr_num AS "MRN",
    ' ' AS "Module",
    ' ' AS "Signed off DT", 
    CASE WHEN
    multi_app_documentation.nsma1_code = 'CRNA' THEN multi_app_documentation.nsma1_ans END AS "Primary CRNA",
    ' ' AS "Secondary CRNA",
    ' ' AS "Primary Anesthesiologist",
' ' AS "Secondary Anesthesiologist",
' ' AS "Canceled Yes/No" 
FROM
    multi_app_documentation
    INNER JOIN ip_visit_1 ON multi_app_documentation.nsma1_patnum = ip_visit_1.ipv1_num
    INNER JOIN visit ON ip_visit_1.ipv1_num = visit.visit_id 
WHERE
multi_app_documentation.nsma1_code = 'DATE' AND TO_DATE(multi_app_documentation.nsma1_ans, 'MMDDYYYY') = CURRENT_DATE 

ORDER BY
ip_visit_1.ipv1_lastname;

【问题讨论】:

    标签: postgresql


    【解决方案1】:

    一个快速而肮脏的解决方案。

    SELECT
        CASE WHEN strpos('01232023', '/') > 0 THEN
            to_date('01/23/23', 'MM/DD/YYYY')
        ELSE
            to_date('01232023', 'MMDDYYYY')
        END AS dt;
    
    01/23/2023
    
    SELECT
        CASE WHEN strpos('01/23/23', '/') > 0 THEN
            to_date('01/23/23', 'MM/DD/YYYY')
        ELSE
            to_date('01232023', 'MMDDYYYY')
        END AS dt;
    
    01/23/2023
    

    尽管您最好将这些值存储在 date 中,使用上面的方法转换为 date

    【讨论】:

      猜你喜欢
      • 2011-01-02
      • 1970-01-01
      • 2010-12-11
      • 2013-01-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-26
      • 1970-01-01
      相关资源
      最近更新 更多