查找每月的第一个星期日不起作用

时间:2019-09-10 09:29:30

标签: sql oracle

我需要找到每月的第一个星期日。尝试使用next_day函数产生了适当的结果,但是如果一个月的第一天是星期日,那么它将不起作用。

import tkinter as tk
from threading import Thread
import time

class SomeFunc:
    def __init__(self):
        self.running=True
        t = Thread(target=self.func)
        t.start()

    def func(self):
        self.root = tk.Tk()
        self.root.update_idletasks()
        #root.attributes('-fullscreen', True)
        #root.overrideredirect(1)
        canvas = tk.Canvas(self.root, width=self.root.winfo_width(), height=self.root.winfo_height())
        #canvas.create_image(0, 0, image=output, anchor="nw")
        canvas.pack(fill=tk.BOTH, expand=1)
        while self.running:
            self.root.update()

a = SomeFunc()
x = 10
while x:
    x-=1
    time.sleep(1)
    print(x)

我正在运行日期为select next_day(trunc(sysdate,'MM'),'sun') first_sun from dual select next_day(trunc(sysdate,'MM'),'sun') first_sun from dual 的查询,该日期显示的是第二个星期日而不是第一个星期日。

2 个答案:

答案 0 :(得分:2)

截断后只需回溯一天,因此您可以找到上个月最后一天之后的第一个星期日:

select next_day(trunc(sysdate,'MM') - 1,'sun') first_sun from dual;

FIRST_SUN 
----------
2019-09-01

答案 1 :(得分:2)

您碰巧在一个月的第一天也就是这个月的第一天登陆

NEXT_DAY使用的是晚于日期,因此您必须从例如前一天开始检查

select next_day(trunc(sysdate,'MM')-1,'SUNDAY') first_sun from dual;
  

NEXT_DAY返回由char命名的第一个工作日的日期,该日期晚于日期。