比如有一个采购交期,要求不在假日交货. 我建了一个公司假日表,里面包含春节\国庆及公司规定的其他假期,但周末的日期没有输入在表里.
要求, 如果计算得出的交货日期在假期(含周末)里, 则交期提前到假期的前一个工作日.
要求查询不用游标\循环语句等. 直接用一句SQL查询,能做到吗?
表结构参考:
V(Dt smalldatetime) 假期表
D(Vend varchar(10),deliDate smalldatetime) 采购表
--------------------
If not object_id('[V]') is null
Drop table [V]
Go
create table V(Dt smalldatetime)
insert into v select '2009-10-01'
insert into v select '2009-10-02'
insert into v select '2009-10-03'
insert into v select '2009-10-04'
insert into v select '2009-10-05'
insert into v select '2009-10-06'
insert into v select '2009-10-07'
insert into v select '2010-2-05'
insert into v select '2010-2-06'
insert into v select '2010-2-07'
If not object_id('[D]') is null
Drop table [D]
Go
create table D(Vend varchar(10),deliDate smalldatetime)
insert into d select 'aa','2009-10-4'
insert into d select 'bb','2009-9-4'
insert into d select 'bb','2009-9-6'
go
--创建函数,找到非节假日和周末:
If not object_id('[fn_date]') is null
Drop function [fn_date]
Go
create function fn_date(@dt smalldatetime)
returns datetime
as
begin
while exists(select 1 from v where dt=@dt) or datepart(w,@dt+@@datefirst-1) in(6,7)
begin
set @dt=dateadd(dd,-1,@dt)
end
return @dt
end
go
select *,dbo.fn_date(deliDate) deliDate2 from D
/*
Vend deliDate deliDate2
---------- ----------------------- -----------------------
aa 2009-10-04 00:00:00 2009-09-30 00:00:00.000
bb 2009-09-04 00:00:00 2009-09-04 00:00:00.000
bb 2009-09-06 00:00:00 2009-09-04 00:00:00.000
(3 行受影响)
*/
分享到:
相关推荐
1. **连接日期表和假期表**:通过日期字段将这两张表连接起来,找出所有的非工作日。可以使用`LEFT JOIN`或`RIGHT JOIN`,根据是否包含周末进行调整。 2. **排除周末**:通常,周末(周六和周日)是不需要计入工作...
-- 标记出节假日 UPDATE dates_table SET is_holiday = CASE WHEN date IN (SELECT holiday_date FROM holidays_table) THEN 1 ELSE 0 END; ``` 通过这些操作,我们就可以方便地查询2019年任何日期的状态,如找出...
通过SQL查询,可以轻松获取特定日期范围内的所有节假日,或者找出节假日前后的工作日,以支持各种业务需求。 综上所述,2019节假日数据库表sql文件的下载和使用,不仅涉及到了数据库设计和SQL语言,还涵盖了日期...
而对于Java开发者来说,他们可以编写程序连接到MySQL数据库,通过查询这些表来获取特定日期的信息,比如判断某个日期是否为工作日,或者找出所有的节假日。 为了使用这些数据,开发者首先需要解压zip文件,然后在...
使用SQL,可以执行复杂的查询来提取特定的节假日信息,例如找出所有在周末的节假日,或者统计一年中工作日与休息日的数量。 标签 "数据" 明确指出了这个压缩包的核心内容,即数据资源。无论是Excel还是SQL,这些...
通过这样的数据,开发人员或数据分析师可以很容易地查询特定日期的信息,例如找出所有节假日,或者统计一年中的工作日数量。同时,这样的数据集也是学习和理解Json和Sql交互的一个很好的实例,对于初学者来说,可以...
日期类型 0表示工作日,非0为节假日(1 周末 2 节假日)
2. **数据结构和数据分析**:如何理解和处理这种类型的数据,如使用Excel或编程工具进行数据清洗、统计分析,找出节假日分布的规律,比如哪个月份的休息日最多,哪些节假日最常被调休等。 3. **文本文件处理**:...
使用这个库,你可以方便地检查某一天是否为工作日,或者在给定的时间范围内找出所有的节假日。 首先,安装`workalendar`库可以通过Python的包管理器pip完成: ```bash pip install workalendar ``` 在Python代码中...
2. 功能性:可能支持单选日期、日期范围选择以及特殊日期提示(如节假日、周末等)。 3. 智能提示:可能包含对旅行高峰期的预警,以及推荐的预订日期,帮助用户做出最佳决策。 4. 可定制性:允许开发者根据自己的...
3. **社会事件响应**:对比不同日期或时间的数据,可以分析大型活动、节假日对城市通信流量的影响。 4. **消费者行为研究**:通过分析用户在特定地点的停留时间,可以推测其消费习惯,如购物、用餐、娱乐等。 5. **...
例如,我们需要计算某段时间内的电梯使用趋势,或者找出特定日期(如周末、节假日)的使用规律。延期可能是因为遇到了复杂的时间因素,比如闰年、时区转换,或者是需要更精确地处理时间窗口,如工作日与非工作日的...
- `[holidays]`:可选参数,包含一个或多个具体日期的范围或数组,这些日期被视为非工作日(例如节假日)。 - **安装与启用**: - 如果在Excel中找不到`NETWORKDAYS`函数,需要通过加载宏来激活它。 - 步骤如下...
JavaScript的Date对象可以帮助我们获取当前日期和时间,通过比较日期,我们可以找出哪些是周末,并使用DOM操作(如改变元素的class或style属性)来高亮这些日期。同样,节假日的高亮也是通过这种方式实现,只需要...
- 通过创建表`t`,插入日期范围,并进行计算,可以找出两个日期之间的工作日数量,考虑了周末和节假日。 4. **时间段判断**: - 判断当前时间是上午、下午还是晚上: ```sql SELECT CASE WHEN to_number(to...
这样的日历数据表在处理日期相关的查询时非常有用,比如计算两个日期之间的天数、找出所有的工作日或者节假日等。同时,通过预填充并定期更新,可以避免每次查询时进行复杂的日期转换,提高查询效率。 总之,`mysql...
同时,在业务规则中,例如计算员工的工龄或者判断是否周末或节假日,`DATEPART`也起到了关键作用。 总之,理解并熟练使用SQL Server的`DATEPART`函数对于数据库开发者和管理员来说至关重要,它能帮助我们有效地管理...
在SQL中,有时我们需要计算两个日期之间的工作日...在实际应用中,可以结合业务需求进行适当的调整,比如考虑节假日的影响,或者更改一周的起始日等。希望这个函数的示例能够帮助你理解和实现SQL中的日期和工作日计算。
3. 法定假日(LegalHoliday):标记是否为国家规定的法定节假日。 4. 公休日(PublicHoliday):如周末,通常不上班的日子。 5. 补班日(MakeupDay):当法定假日落在周末时,对应的调休日期。 SQL文件可以直接导入...
- 对比不同时间段的数据,理解城市活动模式的变化,比如工作日与周末、节假日的区别。 - 为紧急服务(如消防、医疗)规划最短响应路线。 - 商业分析,如店铺选址、广告投放等。 通过GIS软件(如QGIS、ArcGIS等)对...