我正在尝试使用动态日期参数执行以下存储过程,以便它在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;
答案 0 :(得分: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格式的日期?