我用oracle写了下面的代码error:date format 图片在转换整个输入字符串之前结束
to_date(substr(AE1.aestdtc_001_dts, 1, 10),'YYYY/MM/DD') <to_date(substr(AE2.AEENDTC_001_DTS,1, 10),'YYYY/MM/DD')
aeendtc_001_dts类似于2020-05-13t10:14
ljsrvy3e1#
您的格式掩码已关闭。考虑这个版本:
TO_DATE(SUBSTR(AE1.aestdtc_001_dts, 1, 10), 'YYYY-MM-DD') < TO_DATE(SUBSTR(AE2.AEENDTC_001_DTS, 1, 10), 'YYYY-MM-DD')
请注意,您还可以使用 TO_TIMESTAMP ,并包括时间部分:
TO_TIMESTAMP
TO_TIMESTAMP(AE1.aestdtc_001_dts, 'YYYY-MM-DD"T"HH:MI') < TO_TIMESTAMP(AE2.AEENDTC_001_DTS, 'YYYY-MM-DD"T"HH:MI')
在这种情况下,假设您的文本时间戳是固定宽度的,实际上可以直接比较文本:
AE1.aestdtc_001_dts < AE2.AEENDTC_001_DTS
但请注意,在oracle数据库中以文本形式存储时间戳/日期并不理想,请改用适当的日期/时间戳列。
6rqinv9w2#
如果将值存储为字符串,则可以使用字符串进行比较:
substr(AE1.aestdtc_001_dts, 1, 10) < substr(AE2.AEENDTC_001_DTS, 1, 10)
你应该使用 date / timestamp 存储这些值。但是,您选择了一个好的字符串格式进行比较。因此,没有理由转换为 date 或者 timestamp .
date
timestamp
2条答案
按热度按时间ljsrvy3e1#
您的格式掩码已关闭。考虑这个版本:
请注意,您还可以使用
TO_TIMESTAMP
,并包括时间部分:在这种情况下,假设您的文本时间戳是固定宽度的,实际上可以直接比较文本:
但请注意,在oracle数据库中以文本形式存储时间戳/日期并不理想,请改用适当的日期/时间戳列。
6rqinv9w2#
如果将值存储为字符串,则可以使用字符串进行比较:
你应该使用
date
/timestamp
存储这些值。但是,您选择了一个好的字符串格式进行比较。因此,没有理由转换为date
或者timestamp
.