在SQL Server 2012中,可以使用以下方法获取非工作时间:
SELECT *
FROM your_table
WHERE DATEPART(dw, your_date_column) NOT BETWEEN 2 AND 6 -- 排除周一至周五
OR DATEPART(hour, your_date_column) < 9 -- 排除早于9点
OR DATEPART(hour, your_date_column) >= 17 -- 排除晚于等于17点
CREATE TABLE date_table (
date_column DATE,
is_workday BIT,
work_start_time TIME,
work_end_time TIME
)
INSERT INTO date_table (date_column, is_workday, work_start_time, work_end_time)
VALUES
('2022-01-01', 0, NULL, NULL), -- 周末
('2022-01-02', 0, NULL, NULL), -- 周末
('2022-01-03', 1, '09:00:00', '17:00:00'), -- 工作日
-- 其他日期...
SELECT your_table.*
FROM your_table
JOIN date_table ON your_table.your_date_column = date_table.date_column
WHERE date_table.is_workday = 0 -- 非工作日
OR your_table.your_date_column < date_table.work_start_time -- 早于工作开始时间
OR your_table.your_date_column >= date_table.work_end_time -- 晚于等于工作结束时间
以上是两种常见的方法来获取非工作时间。根据具体情况选择适合的方法。关于SQL Server 2012的更多信息和功能,请参考腾讯云SQL Server 2012产品介绍:SQL Server 2012产品介绍。
领取专属 10元无门槛券
手把手带您无忧上云