当日期时间自动转换为字符串时,它将使用这种不希望的格式:
mon dd yyyy hh:miAM
如何更改此默认设置,使其成为更典型的格式,例如:
yyyy-mm-dd hh:mi:ss.mmm
此外,我不想每次都必须显式使用强制转换/转换:
Convert(char(23),__date__,121)
我想使用CONCAT()而不在日期时间前后包装转换。我通常通过转储局部变量等方式来附加字符串变量,作为存储过程。在CATCH中,我将此字符串写了出来,但是只要将datetime值串联起来,它就会使用不需要的格式。
示例代码:
Declare @Now datetime=GETDATE()
,@Temp varchar(100)
SET @Temp=CONCAT('It is now: ',@now)
PRINT @Temp -----------------------It is now: Feb 8 2019 1:45PM
SELECT @Now -----------------------2019-02-08 13:45:05.247
Print @Now ------------------------Feb 8 2019 1:45PM
Print Convert(char(23),@Now,121)---2019-02-08 13:45:05.247
输出:
It is now: Feb 8 2019 1:45PM
-----------------------
2019-02-08 13:45:05.247
(1 row affected)
Feb 8 2019 1:45PM
2019-02-08 13:45:05.247
答案 0 :(得分:0)
如果您正在编写新代码,并且可以创建支持所需格式的对象,那么可以在函数中进行操作。
CREATE FUNCTION dbo.fn_NewDate()
RETURNS varchar(23)
AS
BEGIN
RETURN(CONVERT(VARCHAR(23), GETDATE(), 121));
END
GO
Declare @Now varchar(23) = dbo.fn_NewDate()
,@Temp varchar(100);
SET @Temp=CONCAT('It is now: ', @now)
print @Temp;
结果:
It is now: 2019-02-08 12:43:38.980