我已将日期值分配到一个变量中,该变量为2017-03-15T00:00:00+05:30
我正在与其他值为TO_DATE('01-10-16', 'dd-mm-yy')
的日期进行比较
这是我对同一的查询
IF TO_DATE(r.FINAL_SR_DATE, 'dd-mm-yy') >= TO_DATE('01-10-16', 'dd-mm-yy')
THEN
v_STD_REVISED_AMT_INT := (V_STANDRD_AMT - v_OD_Discount) + (V_STANDRD_AMT - v_OD_Discount) *
2.5/100;
但作为,我遇到了错误
ORA-01861:文字与格式字符串不匹配
请建议我如何解决问题
字符串'2017-03-15T00:00:00+05:30'
表示带时区的时间戳。如果你想忽略时间和区域,你可以只使用字符串的日期部分,但你仍然需要提供正确的格式掩码:
TO_DATE(SUBSTR(r.FINAL_SR_DATE, 1, 10), 'YYYY-MM-DD')
你也可以保留时间部分,忽略时区(如果你确定这是一件有效的事情(:
TO_DATE(SUBSTR(r.FINAL_SR_DATE, 1, 19), 'YYYY-MM-DD"T"HH24:MI:SS')
尽管当你与午夜的日期进行比较时,你的价值中的时间部分有点无关紧要。
您还应该使用4位数的年份作为比较的右侧:
TO_DATE('01-10-2016', 'dd-mm-yyyy')
或者更简单地说是一个日期文字:
DATE '2016-10-01'
所以你最终会得到:
TO_DATE(SUBSTR(r.FINAL_SR_DATE, 1, 10), 'YYYY-MM-DD') >= DATE '2016-10-01'
如果您也想保留时区偏移,则需要不同的数据类型:
TO_TIMESTAMP_TZ(r.FINAL_SR_DATE, 'YYYY-MM-DD"T"HH24:MI:SSTZH:TZM')
然后在必要时调整时区,并与另一个具有时区值的时间戳进行比较,该时间戳也可以是文字,例如:
TIMESTAMP DATE '2016-10-01 00:00:00 UTC'
或
TIMESTAMP DATE '2016-10-01 00:00:00+05:30'
所以你最终会得到:
TO_TIMESTAMP_TZ(r.FINAL_SR_DATE, 'YYYY-MM-DD"T"HH24:MI:SSTZH:TZM')
>= TIMESTAMP DATE '2016-10-01 00:00:00+05:30'
或者适合您的环境的任何偏移;或者优选地具有时区区域而不是偏移。