1

我正在尝试使用动态日期参数执行以下存储过程,以便它在 6 个月前到昨天恢复。

当我在具有美国语言设置的服务器上运行时,它可以工作,但是当我在具有英国语言设置的服务器上运行时,我收到错误:

从字符串转换日期和/或时间时转换失败

我已经尝试将日期转换为 YYYYMMDD,因为这适用于所有服务器但是我一直无法 - 我什至尝试强制转换为 VARCHAR 但没有运气:(

有没有办法以 YYYYMMDD 格式获取日期?希望你能帮忙。

USE Reports

DECLARE @DteStart   DATETIME2(3)
DECLARE @DteEnd     DATETIME2(3)
SELECT  @DteStart = DATEADD(MM, DATEDIFF(MM, 0, CONVERT(DATE,GETDATE(),103))-6,0)
SELECT  @DteEnd   = DATEADD(DD, DATEDIFF(DD, 0, CONVERT(DATE,GETDATE(),103))-1,0)
EXEC [dbo].[spReportsMyData] @DteStart, @DteEnd; 
4

1 回答 1

1

尝试这样的事情:

Declare 
    @StartDate as Date
    , @EndDate as Date

Set @EndDate = DateAdd(Day, -1, Getdate())
Set @StartDate = DateAdd(Month, -6, @EndDate)

Select 
    Convert(VARCHAR(10), @StartDate, 112) As StartDate
    , CONVERT(VARCHAR(10), @EndDate, 112) As EndDate

但是,您的存储过程是否真的需要专门采用 YYYYMMDD 格式的日期?

于 2017-10-13T18:57:09.993 回答