简体   繁体   English

Oracle SQL:TO_DATE逻辑

[英]Oracle SQL: TO_DATE Logic

I am currently getting an ORA-01841 from my query and I think it may be due to the below logic within the query (Something I did not implement). 我目前正在从查询中获取ORA-01841,我认为这可能是由于查询中的以下逻辑(我未实现的问题)。 What is the below logic attempting to do? 下面的逻辑试图做什么?

AND (EVENT_DAY_LOCAL BETWEEN ADD_MONTHS(TRUNC(TO_DATE('{2015/11/14}','YYYY/MM/DD'),'D'),-2)
                AND TO_DATE('{2015/11/15}','YYYY/MM/DD')
            OR EVENT_DAY_LOCAL BETWEEN ADD_MONTHS(TRUNC(TO_DATE('{2015/11/14}','YYYY/MM/DD'),'D'),-13)
                AND (ADD_MONTHS(TRUNC(TO_DATE('{2015/11/15}','YYYY/MM/DD'),'D'),-12)-14)

The brackets around the date are causing the ORA-01841 error so remove them as shown below and it should run. 日期周围的方括号引起ORA-01841错误,因此请如下所示将其删除,然后方括号会运行。 As for what they query is doing, it is determining the week start date and only returning records where EVENT_DAY_LOCAL is from the last two months or is between Oct 8th and Nov 1st 2014. 至于他们查询的内容,它确定的是星期几的开始日期,并且仅返回EVENT_DAY_LOCAL来自最近两个月或2014年10月8日至11月1日之间的记录。

SQL fiddle of the logic SQL逻辑的小提琴

--removing the brackets should fix the error
AND (EVENT_DAY_LOCAL BETWEEN ADD_MONTHS(TRUNC(TO_DATE('2015/11/14','YYYY/MM/DD'),'D'),-2)
                AND TO_DATE('2015/11/15','YYYY/MM/DD')
            OR EVENT_DAY_LOCAL BETWEEN ADD_MONTHS(TRUNC(TO_DATE('2015/11/14','YYYY/MM/DD'),'D'),-13)
                AND (ADD_MONTHS(TRUNC(TO_DATE('2015/11/15','YYYY/MM/DD'),'D'),-12)-14)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM