Sql server 在T-SQL存储过程中格式化SQL Server中的日期和时间值时出现问题

Sql server 在T-SQL存储过程中格式化SQL Server中的日期和时间值时出现问题,sql-server,tsql,stored-procedures,Sql Server,Tsql,Stored Procedures,我有一个简单的存储过程,其中一部分我想设置两个变量,一个用于当前时间,另一个用于当前日期。我需要时间用hhmm格式,日期用yyyyMMdd格式 以下是我目前掌握的代码: BEGIN DECLARE @d AS DATETIME DECLARE @t as TIME SET @d = GETDATE() SET @t = SYSDATETIME() 但是,我试图用它来改变这两个变量的格式,但这一切都帮不了我。我在网上找到的唯一例子是在常规查询中格式化值 有没

我有一个简单的存储过程,其中一部分我想设置两个变量,一个用于当前时间,另一个用于当前日期。我需要时间用
hhmm
格式,日期用
yyyyMMdd
格式

以下是我目前掌握的代码:

BEGIN
    DECLARE @d AS DATETIME 
    DECLARE @t as TIME

    SET @d = GETDATE()
    SET @t  = SYSDATETIME()
但是,我试图用它来改变这两个变量的格式,但这一切都帮不了我。我在网上找到的唯一例子是在常规查询中格式化值


有没有人能告诉我应该怎么做才能得到这些值?提前感谢。

如果2012+您可以使用Format()

示例

DECLARE @d as varchar(8) = format(GetDate(),'yyyyMMdd')
DECLARE @t as varchar(4) = format(SYSDATETIME(),'HHmm')   -- use hh for 12 hour time

Select @d,@t
返回

(No column name)    (No column name)
20180511            1738
2005年


也可以使用:CONVERT(VARCHAR(8),GETDATE(),112)表示日期,REPLACE(CONVERT(VARCHAR(6),SYSDATETIME(),108),':','')表示日期time@HolmesIV张贴备选方案。OP可能不会出现在2012+上,但他可能会:)这就是为什么我把它放在评论中,而不是试图窃取pts。感谢您的快速回复,但不幸的是,我们正在运行2005。还有其他建议吗?我会尝试另一个建议……@HolmesIV++因为你没有发布可选的OP所需的选项还有:你为什么要使用不推荐的
GETDATE()
函数来获取当前日期?您还应该为此使用
SYSDATETIME()
DECLARE @d as varchar(8) = convert(varchar(10),GetDate(),112)
DECLARE @t as varchar(8) = replace(left(convert(varchar(25),SYSDATETIME(),108),5),':','')