我编写了一个SQL语句,它基于sysdate获取当前周。如果日期是2011年3月12日(星期六),那么交货期应该是
03/06/2011-03/12/2011
但是,在运行下面的SQL查询时,我得到了一个o/p:
03/06/2011-03/13/2011
有人能帮我找出问题出在哪里吗?谢谢
SELECT CASE
WHEN TO_CHAR(SYSDATE,'DAY') = 'SATURDAY' THEN
TO_CHAR(next_day(SYSDATE-7,'SUNDAY'),'mm/dd/yyyy') || '-' ||to_char(sysdate,'mm/dd/yyyy')
WHEN TO_CHAR(SYSDATE,'DAY') = 'SUNDAY' THEN
TO_CHAR(SYSDATE,'mm/dd/yyyy') || '-' ||to_char(next_day(sysdate,'SATURDAY'),'mm/dd/yyyy')
ELSE
TO_CHAR(next_day(SYSDATE-7,'SUNDAY'),'mm/dd/yyyy') || '-' ||to_char(next_day(sysdate,'SUNDAY'),'mm/dd/yyyy')
END weeks
FROM DUAL发布于 2011-03-13 06:24:22
“DAY”格式是正确的,因此所有结果都是相同的长度。(我不知道甲骨文为什么这么做,我觉得很傻。)您希望查找'SATURDAY '和'SUNDAY ',或者修剪结果,或者使用“FMDAY”格式。
发布于 2011-03-14 13:38:48
只需在查询中进行一次更改。
SELECT CASE
WHEN TO_CHAR(SYSDATE,'DAY') = 'SATURDAY' THEN
TO_CHAR(next_day(SYSDATE-7,'SUNDAY'),'mm/dd/yyyy') || '-' ||to_char(sysdate,'mm/dd/yyyy')
WHEN TO_CHAR(SYSDATE,'DAY') = 'SUNDAY' THEN
TO_CHAR(SYSDATE,'mm/dd/yyyy') || '-' ||to_char(next_day(sysdate,'SATURDAY'),'mm/dd/yyyy')
ELSE
TO_CHAR(next_day(SYSDATE-7,'SUNDAY'),'mm/dd/yyyy') || '-' ||to_char(next_day(sysdate,'SUNDAY')
,“mm/dd/yyyy”)
在此查询中,在其他部分,您将错误地检查星期日。
你想知道周六是周末。
所以,只要把这个星期天改为星期六,你就会得到你想要的答案(结果) :)
发布于 2011-03-13 05:18:29
为什么你不让你的生活更轻松
http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_dayname
或
http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_dayofweek
https://stackoverflow.com/questions/5287598
复制相似问题