我正在SQL Server中创建一个函数来验证是否给定日期是圣诞节还是新年。请告知以下代码是否可以:
Declare @paramDate date
....
IF Month(@paramDate) = 12 and DAY(@paramDate) = 25
or Month(@paramDate) = 1 and DAY(@paramDate) = 1
BEGIN
....
以上是我能想到的最简单的方法,无论时区和日期格式
我会创建这样一个表值函数,而不是我怀疑是基于您的问题中的语法的标量函数。你的检查很好,我认为它们不能再简单了,而且仍然是直观的,但另一种测试特定日期的方法是与DATEFROMPARTS()
:
CREATE FUNCTION dbo.IsSpecificHoliday
(
@d date
)
RETURNS table WITH SCHEMABINDING
AS
RETURN
(
SELECT IsSpecificHoliday = CASE @d
WHEN DATEFROMPARTS(YEAR(@d), 12, 25) THEN 1
WHEN DATEFROMPARTS(YEAR(@d), 1, 1) THEN 1
ELSE 0 END
);
示例用法:
CREATE TABLE dbo.Dates(TheDate date);
INSERT dbo.Dates(TheDate) VALUES
('19701214'),('19991225'),('20400101');
SELECT d.TheDate, f.IsSpecificHoliday
FROM dbo.Dates AS d
CROSS APPLY dbo.IsSpecificHoliday(d.TheDate) AS f;
结果:IsSpecificHoliday 您可以将隐式转换与
带有显式转换
javascript python java c# php android html jquery c++ css ios sql mysql arrays asp.net json python-3.x ruby-on-rails .net sql-server django objective-c excel regex ruby linux ajax iphone xml vba spring asp.net-mvc database wordpress string postgresql wpf windows xcode bash git oracle list vb.net multithreading eclipse algorithm macos powershell visual-studio image forms numpy scala function api selenium
0 right()
函数一起使用Declare @date date = '2021-12-25'
Select case when right(@date,5) in ('12-25','01-01') then 1 else 0 end
Declare @date date = '2021-12-25'
Select case when convert(varchar(5),@date,101) in ('12/25','01/01') then 1 else 0 end
相关内容
最新更新
热门标签: