我在这个查询问题的日期:ORA-01847错误得到
select to_char(ADD_MONTHS((LAST_DAY(to_date(DATEVAR, 'yyyymmdd'))+1),-1),'yyyymmdd') from mytable
where ROWNUM=1
and var = to_char(last_day(to_date(DATEVAR, 'yyyyMMdd')), 'WW')-1;
我希望它返回时,VAR是本月的最后一周数量和返回空值时,它不是“T如果我的变种是 '29'(weekNumber)我得到:
ORA-01847: “一个月的天必须在1月的最后一天之间”
但是,如果我改变周数为'30'(本月的上周数)我得到正确的结果:
'20160701'
请帮助谢谢。
上周数量?上个星期的月数是30?当你的思想混淆在“星期”和“日”之间时,你如何期望写出正确的代码?没有办法从困惑的想法中编写正确的代码。不管其他什么,你的最后一行将会失败:你计算一个'to_char()'的东西(无所谓),然后你从结果字符串中减1。你需要一种不同的方法来问你的问题:陈述你正在做什么,你的数据是什么样的,你想要什么输出 - 不要只显示你的代码(反正它不能正常工作)。 – mathguy
@mathguy,但今年有超过30周,那么为什么你会认为OP在日期和星期数字之间变得混乱? – Boneist
***从不***,*永远*在'date'值上调用'to_date()'。 –