Sql中的日期转换错误
Posted
技术标签:
【中文标题】Sql中的日期转换错误【英文标题】:Date conversion error in Sql 【发布时间】:2012-12-31 10:01:23 【问题描述】:我得到错误:
从字符串转换日期和/或时间时转换失败。
我这样调用存储过程:
var result = (from x in db.spStoredProc(sStart, sEnd) select x).ToList();
其中sStart
和sEnd
是具有此值的字符串:
sStart = "CONVERT(date,GETDATE())"
和
sEnd = "DATEADD(d,1,CONVERT(date,GETDATE()))"
存储过程有两个varchar(max)
类型的参数
在存储过程中,我进行左连接并像这样使用它们:
where date_expire >= @sStartSQL AND date_expire < @sEndSQL
为什么我会收到错误消息?
【问题讨论】:
您可能正在混合使用日期格式(例如美国和欧盟),因此当您尝试从字符串转换时它会失败。 @ChrisF 好的,如何解决这个问题? 将所有日期存储为日期(而不是字符串),并确保在与字符串相互转换时正确设置了区域设置。 您使用的是哪个 DBMS? SQL 不是产品 - 它是一种查询语言。 【参考方案1】:您只能将文字作为参数传递。所以 SQL Server 从字面上尝试将其转换为日期:
sEnd = "DATEADD(d,1,CONVERT(date,GETDATE()))"
相反,通过:
sEnd = DateTime.Now.AddDays(1).ToString("yyyy-MM-dd HH:mm:ss")
作为参数。
【讨论】:
以上是关于Sql中的日期转换错误的主要内容,如果未能解决你的问题,请参考以下文章