sql server如何获取上一个工作日日期
时间: 2023-04-08 21:05:06 浏览: 622
你可以使用以下 SQL 语句获取上一个工作日日期:
SELECT DATEADD(day, CASE WHEN DATEPART(weekday, GETDATE()) = 2 THEN -3 ELSE -1 END, CONVERT(date, GETDATE())) AS 上一个工作日日期
这个 SQL 语句会根据当前日期获取上一个工作日日期,如果当前日期是周一,则返回上上个工作日日期。
相关问题
sql server有一个工作日历,如何获取当期日期与未来全部日期的工作日时间差几天
可以通过以下步骤获取当期日期与未来全部日期的工作日时间差几天:
1. 使用DATEDIFF函数计算日期之间的天数差异,例如:
```
SELECT DATEDIFF(day, GETDATE(), '2022-12-31') AS DaysDiff
```
这将计算从当前日期到2022年12月31日之间的天数差异。
2. 使用工作日历表来确定两个日期之间的工作日数量。假设工作日历表名为"calendar",包含日期列和是否工作日的列"workday",可以使用以下查询来确定两个日期之间的工作日数量:
```
SELECT COUNT(*) AS WorkDays
FROM calendar
WHERE calendar.date BETWEEN GETDATE() AND '2022-12-31'
AND calendar.workday = 1
```
这将计算从当前日期到2022年12月31日之间的工作日数量。
3. 将工作日数量减去天数差异,就可以得到当期日期与未来全部日期的工作日时间差数。
```
SELECT COUNT(*) - DATEDIFF(day, GETDATE(), '2022-12-31') AS WorkDaysDiff
FROM calendar
WHERE calendar.date BETWEEN GETDATE() AND '2022-12-31'
AND calendar.workday = 1
```
这将计算从当前日期到2022年12月31日之间的工作日时间差数。
sql到期日加60个工作日怎么实现
如果您的到期日存储在一个名为`expire_date`的日期类型的字段中,您可以使用DATEADD函数来添加60个工作日。但是,SQL Server中的日期函数不包括工作日的计算,因此您需要使用自定义函数来实现。以下是一个示例自定义函数:
```sql
CREATE FUNCTION dbo.AddBusinessDays(@StartDate DATE, @DaysToAdd INT)
RETURNS DATE
AS
BEGIN
DECLARE @EndDate DATE = @StartDate
DECLARE @DaysAdded INT = 0
WHILE @DaysAdded < @DaysToAdd
BEGIN
SET @EndDate = DATEADD(DAY, 1, @EndDate)
IF DATENAME(WEEKDAY, @EndDate) NOT IN ('Saturday', 'Sunday')
SET @DaysAdded = @DaysAdded + 1
END
RETURN @EndDate
END
```
然后,您可以使用以下代码来添加60个工作日:
```sql
SELECT dbo.AddBusinessDays(expire_date, 60) AS new_expire_date
FROM your_table;
```
其中,`your_table`是您存储到期日的表的名称。