视图中将varchar2类型转换为date类型的方法
在Oracle中将VARCHAR2类型的日期字符串转换为DATE类型
首先明确:Oracle的DATE类型仅支持到秒级精度,你的字符串末尾的:209是毫秒部分,转换后这部分会被自动截断,无法保留在DATE类型中。如果需要保留毫秒,建议使用TIMESTAMP类型替代。
转换方案
方案1:直接使用TO_DATE函数(忽略毫秒)
针对你的字符串格式'26Jul2022 10:05:52:209',匹配的格式掩码为'DDMonYYYY HH24:MI:SS',SQL示例:
SELECT TO_DATE(your_varchar_column, 'DDMonYYYY HH24:MI:SS') AS converted_date FROM your_view;
如果数据库默认语言不是英文,可能需要指定日期语言参数,确保Jul能被正确识别:
SELECT TO_DATE(your_varchar_column, 'DDMonYYYY HH24:MI:SS', 'NLS_DATE_LANGUAGE=ENGLISH') AS converted_date FROM your_view;
方案2:先转TIMESTAMP再转DATE(同样截断毫秒)
如果想先完整解析包含毫秒的字符串,再转为DATE类型,可以这样写:
SELECT CAST(TO_TIMESTAMP(your_varchar_column, 'DDMonYYYY HH24:MI:SS:FF3') AS DATE) AS converted_date FROM your_view;
补充说明
如果需要保留毫秒信息,不要使用DATE类型,直接用TO_TIMESTAMP转换为TIMESTAMP类型即可:
SELECT TO_TIMESTAMP(your_varchar_column, 'DDMonYYYY HH24:MI:SS:FF3') AS converted_timestamp FROM your_view;
内容的提问来源于stack exchange,提问作者Mohsin ALvi
相关产品推荐
相关产品推荐

