gpt4 book ai didi

sql-server-2008 - 将字符串与 SmallDateTime 用于工作

转载 作者:行者123 更新时间:2023-12-04 18:19:12 27 4
gpt4 key购买 nike

我正在尝试调试旧的 VB6我的工作程序。它充满了错误和硬编码的东西。

该程序正在连接 SQL Server 2005 数据库以使用存储过程读取和写入信息。

由于该程序在我工作时仍在使用,因此我备份了数据库以测试一些东西并在我的 SQL Server 2008 版本中恢复它。一切正常。

当我第二天早上进来时,我得到了一个错误,我没有在晚上使用该程序。

问题 :

"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

错误信息:

The conversion of a varchar data type to a smalldatetime data type resulted in an out-of-range value



所以错误在这里 fcdate=@Datest在存储过程中。我尝试在存储过程中添加这一行
SELECT convert(datetime, @Datest, 120)

这对查询中的转换很有吸引力,但是当其他查询尝试访问此变量时,它会在程序中导致数百个其他错误,因此它不是一个选项。

知道为什么这个查询昨天工作得很好,现在它给了我这个错误吗?提前致谢。

最佳答案

你可能有 set dateformat dmy连接到数据库副本时。日期格式由使用的语言隐式设置。 set language .

您可以将参数的格式更改为 YYYYMMDD不管 set dateformat 是安全的甚至更好,将您的参数更改为 datetime .

如果这不是一个选项,您可以使用 where fcdate=convert(datetime, @Datest, 111) 重写您的查询。

关于sql-server-2008 - 将字符串与 SmallDateTime 用于工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11035814/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com