存储时失去价值的日期
Date losing value when being stored
我正在尝试将一组日期转换为特定格式 (ddmmyy),以便它们可以 运行 与我拥有的许多脚本相对应。
我已经设法将日期转换为正确的格式,但是当我尝试将其存储为变量时,它只是 returns 为 null 或未格式化的日期。
DECLARE @CurrentDate SMALLDATETIME
SELECT @CurrentDate = getdate()
SELECT @CurrentDate = DATEADD(day, -1, @CurrentDate)
SELECT @CurrentDate = STR_REPLACE(CONVERT(varchar,@CurrentDate,3),'/',null)
--Returns this:
20-Mar-2002 00:00:00
DECLARE @CurrentDate SMALLDATETIME
SELECT @CurrentDate = getdate()
SELECT @CurrentDate = DATEADD(day, -1, @CurrentDate)
SELECT STR_REPLACE(CONVERT(varchar,@CurrentDate,3),'/',null)
--Returns this:
020320
我认为问题出在我声明的变量是一个 smalldatetime 对象,但我不确定如何将其正确转换为可以作为变量存储的字符串?
我试过使用第二个变量并将其声明为 varchar,然后将我的日期存储为 varchar,但这也不起作用:
DECLARE @CurrentDate SMALLDATETIME
DECLARE @CurrentDateFinal VARCHAR
SELECT @CurrentDate = getdate()
SELECT @CurrentDate = DATEADD(day, -1, @CurrentDate)
SELECT @CurrentDateFinal = CAST(STR_REPLACE(@CurrentDate,'/',null) AS VARCHAR)
--Returns this:
03-Mar-2020 00:00:00
您可以在一行中使用 dateadd 进行当前日期修改 - 无需两行。下面为您提供了 DDMMYY 输出,尽管我个人不会使用该格式,因为您可能会因区域差异而感到困惑(例如,美国更喜欢 MMDDYY 而英国倾向于 DDMMYY)。也总是使用 4 位数的年份 IMO。
DECLARE @FirstDate SMALLDATETIME
DECLARE @FinalDate varchar(20)
SELECT @FirstDate = DATEADD(day, -1,getdate())
set @FinalDate = STR_REPLACE(CONVERT(varchar,@FirstDate,3),'/',null)
SELECT @FinalDate
--------------------
030320
(1 row affected)
我正在尝试将一组日期转换为特定格式 (ddmmyy),以便它们可以 运行 与我拥有的许多脚本相对应。
我已经设法将日期转换为正确的格式,但是当我尝试将其存储为变量时,它只是 returns 为 null 或未格式化的日期。
DECLARE @CurrentDate SMALLDATETIME
SELECT @CurrentDate = getdate()
SELECT @CurrentDate = DATEADD(day, -1, @CurrentDate)
SELECT @CurrentDate = STR_REPLACE(CONVERT(varchar,@CurrentDate,3),'/',null)
--Returns this:
20-Mar-2002 00:00:00
DECLARE @CurrentDate SMALLDATETIME
SELECT @CurrentDate = getdate()
SELECT @CurrentDate = DATEADD(day, -1, @CurrentDate)
SELECT STR_REPLACE(CONVERT(varchar,@CurrentDate,3),'/',null)
--Returns this:
020320
我认为问题出在我声明的变量是一个 smalldatetime 对象,但我不确定如何将其正确转换为可以作为变量存储的字符串?
我试过使用第二个变量并将其声明为 varchar,然后将我的日期存储为 varchar,但这也不起作用:
DECLARE @CurrentDate SMALLDATETIME
DECLARE @CurrentDateFinal VARCHAR
SELECT @CurrentDate = getdate()
SELECT @CurrentDate = DATEADD(day, -1, @CurrentDate)
SELECT @CurrentDateFinal = CAST(STR_REPLACE(@CurrentDate,'/',null) AS VARCHAR)
--Returns this:
03-Mar-2020 00:00:00
您可以在一行中使用 dateadd 进行当前日期修改 - 无需两行。下面为您提供了 DDMMYY 输出,尽管我个人不会使用该格式,因为您可能会因区域差异而感到困惑(例如,美国更喜欢 MMDDYY 而英国倾向于 DDMMYY)。也总是使用 4 位数的年份 IMO。
DECLARE @FirstDate SMALLDATETIME
DECLARE @FinalDate varchar(20)
SELECT @FirstDate = DATEADD(day, -1,getdate())
set @FinalDate = STR_REPLACE(CONVERT(varchar,@FirstDate,3),'/',null)
SELECT @FinalDate
--------------------
030320
(1 row affected)