使用SQL选择周
我有一个名为“选择周”的下拉列表,该下拉列表的值可以是3周,即当前周、下周和之后的一周。需要使用SQL语句将这些值更新到下拉列表中 例如:今天是2011年3月12日,那么在下拉列表中,选项应该如下:2011年3月6日-2011年3月12日(太阳到周六) 2011年3月13日-2011年3月19日(太阳至周六) 2011年3月20日至2011年3月26日(太阳至周六) 我已经使用selectcase编写了一小部分代码。请帮我理解代码和正确的逻辑。Thnx提前获得任何帮助:)使用SQL选择周,sql,date,Sql,Date,我有一个名为“选择周”的下拉列表,该下拉列表的值可以是3周,即当前周、下周和之后的一周。需要使用SQL语句将这些值更新到下拉列表中 例如:今天是2011年3月12日,那么在下拉列表中,选项应该如下:2011年3月6日-2011年3月12日(太阳到周六) 2011年3月13日-2011年3月19日(太阳至周六) 2011年3月20日至2011年3月26日(太阳至周六) 我已经使用selectcase编写了一小部分代码。请帮我理解代码和正确的逻辑。Thnx提前获得任何帮助:) 在我看来,SQL和GU
在我看来,SQL和GUI之间的依赖性太强了。您对一个糟糕的SQL查询施加了太大的压力。为什么不使用SQL从数据库中获取数据,并将所有计算逻辑留给真正的编程语言?它将使它更易于阅读和维护。这个查询看起来很难看,包含所有的字符串连接。如果这应该在DB中完成,那么 只是显示weekno的代码。您可以以类似的方式提取每次的开始-结束日期,但我可能会将它们存储在本地db表中,并在联合的末尾选择它们。例如: 声明@weeks表(weekno int、开始日期时间、结束日期时间) 声明@now datetime; 设置@now=getdate() 声明@previousWeek int; 设置@previousWeek=datepart(week,(dateadd(week,-1,@now)) 声明@nextWeek int; 设置@nextWeek=datepart(week,(dateadd(week,1,@now)) 声明@weekNow int; 设置@weekNow=datepart(周,现在) 选择@previousweekno 联盟 选择@weekNow 联盟
选择@nextWeek这将更容易在应用程序端执行。除非有一个依赖于数据库状态的条件。@IIya:是的,这是一种非常迂回的方式,但我被要求这样做。任何关于本周计算逻辑的建议都很好。Thnx
select case when
to_char(sysdate,'day') = 'saturday'
then
to_char(next_day(sysdate,'sunday')-7,'mm/dd/yyyy') || '-' || to_char
(next_day(sysdate-1,'saturday'),'mm/dd/yyyy')
else || '-' || to_char
(next_day(sysdayte,'saturday'),'mm/dd/yyyy')
end weeks from dual union .... union