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),':','')