SQL日期转换问题[急,在线等]

snowwolf613 2009-11-12 02:01:53
Declare @Date DateTime
Select @Date='2009-09-25'
Select CONVERT(DATETIME,CONVERT(VARCHAR(10),@Date))

以上脚本在大部分的数据库(不同服务器)中都可正常运行,但今天发现有一台不可以,会报错:

Msg 242, Level 16, State 3, Line 3
The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value.

而且在可正常运行的数据库中,有的是SQL2000 有的是2005,所以可以排除版本问题,不知道是不是服务器或数据库哪里的设定,没设好;

还请各位高手不吝赐教,谢谢!

* 不是这个语句要有什麼意义,这个脚本只是用来说明问题的
...全文
101 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
snowwolf613 2009-11-13
  • 打赏
  • 举报
回复
谢谢各位的参与,这个问题已经解决了,是默认语言的问题;

我不确定是不是我的表达能力太有限,感觉好像各位是没明白我的提问的重点;

除了 1 楼、10 楼的朋友,有说到默认值设定的问题
luoyoumou 2009-11-12
  • 打赏
  • 举报
回复
Declare @Date DateTime
Select @Date='2009-09-25'
Select CONVERT(DATETIME,CONVERT(VARCHAR(10),@Date,120))

--加个120
luoyoumou 2009-11-12
  • 打赏
  • 举报
回复
--数据库好像有一个默认的日期格式吧,可能你的数据库默认的日期格式不是120,是其他的格式!
snowwolf613 2009-11-12
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 sql77 的回复:]
引用 4 楼 snowwolf613 的回复:
引用 2 楼 sql77 的回复:
SQL codeDeclare@DateDateTimeSelect@Date='2009-09-25'SelectCONVERT(DATETIME,CONVERT(VARCHAR(10),@Date,120))------------------------------------------------------2009-09-2500:00:00.000

(所影响的行数为1 行)

加个格式,或用ISDATE()判断下


  是的,加了格式可以运行;但是之前别人写的脚本很多这种转换都没有加格式,现在大量报错,一个一个改太麻烦,而且这个问题在别的机器上不会出现;

所以我想会不会是哪里设定的问题

我是说你传进去的日期要判断一下,能转成日期行吗
[/Quote]

传进去的那个字段本身就是Datetime 型的。 如果是要改脚本是可以改,只是太麻烦。

我现在问题的重点是:为什么同样的脚本,在大部分电脑上是可以的,而就在他那台上却不可以,会报错;
snowwolf613 2009-11-12
  • 打赏
  • 举报
回复
我这里写的脚本是直接用 '2009-09-25' 赋值,在实际的程序里面是用的字段名,那个字段是 DateTime 型的;

各位老大,我现在说的不是这个语句本身的问题,是想问在服务器或是数据库上是不是有什么设定,导致同样的脚本在有的地方运行不了;

忆轩辕 2009-11-12
  • 打赏
  • 举报
回复
错误很明显,你的@date 赋的值不对
SQL77 2009-11-12
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 snowwolf613 的回复:]
引用 2 楼 sql77 的回复:
SQL codeDeclare@DateDateTimeSelect@Date='2009-09-25'SelectCONVERT(DATETIME,CONVERT(VARCHAR(10),@Date,120))------------------------------------------------------2009-09-2500:00:00.000

(所影响的行数为1 行)

加个格式,或用ISDATE()判断下


  是的,加了格式可以运行;但是之前别人写的脚本很多这种转换都没有加格式,现在大量报错,一个一个改太麻烦,而且这个问题在别的机器上不会出现;

所以我想会不会是哪里设定的问题
[/Quote]
我是说你传进去的日期要判断一下,能转成日期行吗
幸运的意外 2009-11-12
  • 打赏
  • 举报
回复
语句本身没有什么问题的,看起来
snowwolf613 2009-11-12
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 sql77 的回复:]
SQL codeDeclare@DateDateTimeSelect@Date='2009-09-25'SelectCONVERT(DATETIME,CONVERT(VARCHAR(10),@Date,120))------------------------------------------------------2009-09-2500:00:00.000

(所影响的行数为1 行)

加个格式,或用ISDATE()判断下
[/Quote]

是的,加了格式可以运行;但是之前别人写的脚本很多这种转换都没有加格式,现在大量报错,一个一个改太麻烦,而且这个问题在别的机器上不会出现;

所以我想会不会是哪里设定的问题
snowwolf613 2009-11-12
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 fredrickhu 的回复:]
有可能是日期格式不正确

比如说超过了9999年

比如说写成了其他格式
[/Quote]

没有;

我就是拿上面的脚本直接在那台上运行,就是报错;

而在大部分的数据库上不会有问题,我这边也没这个问题;
SQL77 2009-11-12
  • 打赏
  • 举报
回复
Declare @Date DateTime 
Select @Date='2009-09-25'
Select CONVERT(DATETIME,CONVERT(VARCHAR(10),@Date,120))


------------------------------------------------------
2009-09-25 00:00:00.000

(所影响的行数为 1 行)


加个格式,或用ISDATE()判断下
--小F-- 2009-11-12
  • 打赏
  • 举报
回复
有可能是日期格式不正确

比如说超过了9999年

比如说写成了其他格式
MATLAB主动噪声和振动控制算法——对较大的次级路径变化具有鲁棒性内容概要:本文主要介绍了一种在MATLAB环境下实现的主动噪声和振动控制算法,该算法针对较大的次级路径变化具有较强的鲁棒性。文中详细阐述了算法的设计原理与实现方法,重点解决了传统控制系统中因次级路径动态变化导致性能下降的问题。通过引入自适应机制和鲁棒控制策略,提升了系统在复杂环境下的稳定性和控制精度,适用于需要高精度噪声与振动抑制的实际工程场景。此外,文档还列举了多个MATLAB仿真实例及相关科研技术服务内容,涵盖信号处理、智能优化、机器学习等多个交叉领域。; 适合人群:具备一定MATLAB编程基础和控制系统理论知识的科研人员及工程技术人员,尤其适合从事噪声与振动控制、信号处理、自动化等相关领域的研究生和工程师。; 使用场景及目标:①应用于汽车、航空航天、精密仪器等对噪声和振动敏感的工业领域;②用于提升现有主动控制系统对参数变化的适应能力;③为相关科研项目提供算法验证与仿真平台支持; 阅读建议:建议读者结合提供的MATLAB代码进行仿真实验,深入理解算法在不同次级路径条件下的响应特性,并可通过调整控制参数进一步探究其鲁棒性边界。同时可参考文档中列出的相关技术案例拓展应用场景。

22,298

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧