我想知道是否有人可以帮助我。
我创建了一个小的SQL查询,但每次运行它时,都会出现以下错误
将char数据类型转换为smalldatetime数据类型导致了一个超出范围的smalldatetype值。
我试图运行的SQL如下:
UPDATE sales
SET dateOut = '2014-04-31 12:32:46'
WHERE userID = '11111' AND dateOut >= '2014-04-01 12:32:46'
非常感谢任何帮助。
干杯,
答案 0 :(得分:2)
我不知道你为什么会收到这个错误。一种更安全的转换方式(因为它不会在系统日期/时间格式化首选项上转发)是使用convert()
。所以你可以尝试:
UPDATE sales
SET dateOut = convert(smalldatetime, '2014-04-31 12:32:46', 120)
WHERE userID='11111' AND
dateOut >= convert(smalldatetime, '2014-04-01 12:32:46', 120);
编辑:
DUH!四月只有30天。尝试做
UPDATE sales
SET dateOut = convert(smalldatetime, '2014-04-30 12:32:46', 120)
WHERE userID='11111' AND
dateOut >= convert(smalldatetime, '2014-04-01 12:32:46', 120);
实际上,通过这种敏锐的观察,您的原件将使用正确的日期:
UPDATE sales
SET dateOut ='2014-04-30 12:32:46'
WHERE userID='11111' AND dateOut >= '2014-04-01 12:32:46';
答案 1 :(得分:0)
我有完全相同的问题,无法弄明白。原来,SQL服务器位于我正在运行代码的机器的不同时区。我用于DateTime对象的扩展方法使用英国日期格式,即使SQL Server管理工作室显示相同的日期格式,底层系统也没有使用此格式。
我能够使用以下内容使其正常工作。
System.DateTime currentdate = System.DateTime.Now;
string currentDateString = currentdate.Month + "/" + currentdate.Day + "/" + currentdate.Year;