【问题标题】:How to add 1 day to current date and have result in format yyyymmdd in SQL Server?如何将 1 天添加到当前日期并在 SQL Server 中生成格式 yyyymmdd?
【发布时间】:2026-02-01 18:25:01
【问题描述】:

我需要将 1 天添加到当前日期并以 yyyymmdd 格式输出。 代码需要写在sql server的存储过程中。

目前我的代码如下:

 DECLARE @dat DATE

    select @dat = dateadd(DD, 1, getdate())
    SELECT @dat =LEFT(CONVERT(VARCHAR(8), @dat, 112),10) 

但是,我似乎做错了什么,因为我在 sql 表上的输出格式为 yyyy-mm-dd。我需要去掉连字符。

有什么建议吗?提前致谢。

【问题讨论】:

  • 你为什么关心破折号?您返回的是 date,而不是 string。担心在客户端格式化。现在,您对 Management Studio 如何向您呈现日期感到不安。另外,请停止使用惰性速记。为什么DDDAY 好?
  • 你想要一个字符串还是一个日期作为 Proc 的输出?如果您需要日期,则格式无关紧要,如果您需要字符串,请将@​​dat 的声明更改为字符串。
  • 感谢您的建议。想要一个字符串作为输出。
  • wanted a string as the output 有什么可能的目的?

标签: sql sql-server stored-procedures sql-server-2008-r2


【解决方案1】:

问题是您将其分配回日期对象。您需要将其分配给 varchar。

我在 SQL Server 2005 中做了以下操作:

DECLARE @dat DATETIME
DECLARE @string varchar(8)
SET @dat = GetUtcDate()

    select @dat = dateadd(DD, 1, getdate())

    SELECT @string =CONVERT(VARCHAR(8), @dat, 112) 
PRINT @string

【讨论】:

    【解决方案2】:

    将@dat 的声明更改为字符串

    【讨论】:

      【解决方案3】:

      试试这个 -

      DECLARE @date VARCHAR(8)
      SELECT @date = CONVERT(VARCHAR(8), DATEADD(DAY, 1, GETDATE()), 112) 
      
      SELECT @date
      

      【讨论】:

        【解决方案4】:
        select @dat = dateadd(DD, 1, getdate())
        DECLARE @datCus varchar(8)
        select @datCus=LEFT(CONVERT(VARCHAR(8), @dat, 112),10) 
        

        问题是我将@dat 分配给插入语句值。然而,有一个 varchar 变量来处理转换部分解决了这个问题(在本例中为 @datCus)。

        【讨论】: