Tsql 使用动态日期参数执行存储过程-转换错误

Tsql 使用动态日期参数执行存储过程-转换错误,tsql,sql-server-2012,ssms,dateadd,sql-convert,Tsql,Sql Server 2012,Ssms,Dateadd,Sql Convert,我试图用一个动态日期参数执行以下存储过程,以便它从6个月前开始到昨天 当我在具有美国语言设置的服务器上运行时,它可以工作。但是,当我在具有英国语言设置的服务器上运行时,我会收到以下错误: 从字符串转换日期和/或时间时转换失败 我曾尝试将日期转换为YYYYMMDD,因为这在所有服务器上都有效,但我一直无法做到-我甚至尝试强制转换为VARCHAR,但没有成功:( 有没有办法以YYYYMMDD格式获取日期?希望您能提供帮助 USE Reports DECLARE @DteStart DATETI

我试图用一个动态日期参数执行以下存储过程,以便它从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; 

试着这样做:

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格式的日期吗?

该代码是特定于产品的。请标记您正在使用的dbms。如果您在所有适当的位置使用该数据类型,应该不会有问题。摆弄您不想要的时间和字符串表示是导致疯狂的原因。PSA:。我无法重新编程介绍一下?你到底在用什么
语言
呢?现在可以用了!我想我们的DBA已经把语言设置搞乱了,都整理好了,谢谢你的回复:)根据上面的评论代码现在可以用了-谢谢你的回答:)