声明一个将 Date 数据类型转换为 Integer 的变量
Declare a variable which converts Date data type to Integer
在 SQL 服务器中,以下代码根据今天的日期给出上周星期日的日期:
DECLARE @dt date = GETDATE();
SELECT dateadd(week,datediff(week,6,@dt),6);
我需要从给定的日期开始声明一个变量,并使该变量成为一个整数。我试过类似的东西:
DECLARE @last_sunday INT;
SELECT dateadd(week,datediff(week,6,@dt),6) INTO @last_sunday FROM xxx;
但问题是我不明白在FROM之后应该写哪个table。在我的解释中:
dateadd(week,datediff(week,6,@dt),6)
是某种计算,而不是从数据 table 中收集值。如何将上周日的日期设置为整数变量?
你需要做这样的事情:
步骤 1
DECLARE @date DATE = dateadd(week,datediff(week,6,GETDATE()),6)
步骤 2
DECLARE @dateInt AS INT = REPLACE(@date, '-', '')
在第一步中,您将获得日期数据类型的正确日期值。鉴于日期有连字符,然后您将在步骤 2 中使用 REPLACE
函数删除它们,同时将您的日期转换为整数值。
最后,为确保步骤 1 和 2 有效,您可以 运行 以下查询:
SELECT @dateInt
今天,这将为您提供以下值:20210530
为了方便起见,onw 还可以创建一个函数:
CREATE FUNCTION LastSunday ()
RETURNS int
AS
BEGIN
RETURN convert(int,dateadd(week,datediff(week,6,getdate()),6))
END
GO
之后你可以做:
select dbo.LastSunday();
这将(现在 3th jun 2021
)导致:44344
最简单的查询:
select cast(replace(cast(getdate() as date),'-','') as int) as DateToInteger
在 SQL 服务器中,以下代码根据今天的日期给出上周星期日的日期:
DECLARE @dt date = GETDATE();
SELECT dateadd(week,datediff(week,6,@dt),6);
我需要从给定的日期开始声明一个变量,并使该变量成为一个整数。我试过类似的东西:
DECLARE @last_sunday INT;
SELECT dateadd(week,datediff(week,6,@dt),6) INTO @last_sunday FROM xxx;
但问题是我不明白在FROM之后应该写哪个table。在我的解释中:
dateadd(week,datediff(week,6,@dt),6)
是某种计算,而不是从数据 table 中收集值。如何将上周日的日期设置为整数变量?
你需要做这样的事情:
步骤 1
DECLARE @date DATE = dateadd(week,datediff(week,6,GETDATE()),6)
步骤 2
DECLARE @dateInt AS INT = REPLACE(@date, '-', '')
在第一步中,您将获得日期数据类型的正确日期值。鉴于日期有连字符,然后您将在步骤 2 中使用 REPLACE
函数删除它们,同时将您的日期转换为整数值。
最后,为确保步骤 1 和 2 有效,您可以 运行 以下查询:
SELECT @dateInt
今天,这将为您提供以下值:20210530
为了方便起见,onw 还可以创建一个函数:
CREATE FUNCTION LastSunday ()
RETURNS int
AS
BEGIN
RETURN convert(int,dateadd(week,datediff(week,6,getdate()),6))
END
GO
之后你可以做:
select dbo.LastSunday();
这将(现在 3th jun 2021
)导致:44344
最简单的查询:
select cast(replace(cast(getdate() as date),'-','') as int) as DateToInteger