Sql server 2008 将字符串与用于工作的SmallDateTime进行比较
我试图在我的工作中调试一个旧的VB6程序。它充满了bug和硬编码的东西 该程序正在连接SQL Server 2005数据库,以使用存储过程读取和写入信息 由于该程序在我工作时仍在使用,因此我对数据库进行了备份以测试某些内容,并在我的SQL Server 2008版本中对其进行了恢复。一切正常 当我第二天早上来的时候,我犯了一个错误,前一天晚上我没有犯这个错误,即使晚上没有使用这个程序 问题是:Sql server 2008 将字符串与用于工作的SmallDateTime进行比较,sql-server-2008,sql-server-2005,vb6,type-conversion,Sql Server 2008,Sql Server 2005,Vb6,Type Conversion,我试图在我的工作中调试一个旧的VB6程序。它充满了bug和硬编码的东西 该程序正在连接SQL Server 2005数据库,以使用存储过程读取和写入信息 由于该程序在我工作时仍在使用,因此我对数据库进行了备份以测试某些内容,并在我的SQL Server 2008版本中对其进行了恢复。一切正常 当我第二天早上来的时候,我犯了一个错误,前一天晚上我没有犯这个错误,即使晚上没有使用这个程序 问题是: "exec dbo.sp_Get_Wait_Data '" & DateEx & "'
"exec dbo.sp_Get_Wait_Data '" & DateEx & "'"
DateEx是一个包含2012/06/14的字符串
存储过程:
[sp_Get_Wait_Data] @Datest as char(10)
AS
SELECT
(A lot of column names here)
FROM
Fiche
LEFT JOIN
voyage ON fcid = vofiche
LEFT JOIN
client on fcaccount = cusnov
WHERE
fcdate = @Datest
AND (void is null or (void > 0 and (void <> 999 and void <> 1000 and void <> 998)))
AND ((fcremarques NOT LIKE '%SYSANNULATION%' OR
fcremarques IS NULL)
AND fcrettime IS NOT NULL)
ORDER BY
FcTime, FcOrgSite, fcdessite
这对于查询中的转换非常有用,但当其他查询试图访问此变量时,会在程序中导致数百个其他错误,因此它不是一个选项
你知道为什么这个查询昨天运行得很好,现在却给了我这个错误吗?提前感谢。当连接到数据库副本时,您可能有。日期格式由使用的语言隐式设置
您可以将参数的格式更改为YYYYMMDD,这将是安全的,无论设置的是dateformat还是更好的方法,都可以将参数更改为datetime
如果这不是一个选项,那么您可以使用连接到数据库副本时可能有的fcdate=convertdatetime、@Datest,111重写查询。日期格式由使用的语言隐式设置
您可以将参数的格式更改为YYYYMMDD,这将是安全的,无论设置的是dateformat还是更好的方法,都可以将参数更改为datetime
如果这不是一个选项,您可以使用where fcdate=convertdatetime、@Datest,111重写您的查询这段代码在6月13日的任何时候都有效吗?如果不是,我猜这与mm/dd/mm订购有关?是的,这是实际问题。它在6月13日运行得很好。6月13日上午,Sql 2005。6月13日晚,SQL 2008。6月14日sql 2008完全不工作。。。这就是为什么不应该将日期存储/传递为字符串:实际上我正在调试这个程序,但我没有编写它。关于这段代码的一切都是令人痛苦的。标签用作变量,到处都是变量,硬编码的东西等等。这个代码在6月13日的任何时候都有效吗?如果不是,我猜这与mm/dd/mm订购有关?是的,这是实际问题。它在6月13日运行得很好。6月13日上午,Sql 2005。6月13日晚,SQL 2008。6月14日sql 2008完全不工作。。。这就是为什么不应该将日期存储/传递为字符串:实际上我正在调试这个程序,但我没有编写它。关于这段代码的一切都是令人痛苦的。标签用作变量、变量、硬编码的东西等等。最后一个选项做得很好!你帮了我这么多,这个问题让我很难受-非常感谢!最后一个选项很好地完成了任务!你帮了我这么多,这个问题让我很难受-非常感谢!
SELECT convert(datetime, @Datest, 120)