实在头疼,上来求助,求解。
目前用一成熟软件查询我的数据库(SQL Server2000中文版),用SQL事件探查器分析有一条查询语句条件类似于这样where (T.DateAndTime IN ('08-02-10 10:54:22')),数据库中明明有这个日期的数据,但是返回结果为0,若改成(T.DateAndTime IN ('2010-08-02 10:54:22')),则能正确返回。问题的关键是无论我如何修改电脑时间格式,哪怕数据库中显示的就是'08-02-10 10:54:22',返回结果仍为0,查询软件我不能修改,请问有什么办法能解决该问题?多谢
目前用一成熟软件查询我的数据库(SQL Server2000中文版),用SQL事件探查器分析有一条查询语句条件类似于这样where (T.DateAndTime IN ('08-02-10 10:54:22')),数据库中明明有这个日期的数据,但是返回结果为0,若改成(T.DateAndTime IN ('2010-08-02 10:54:22')),则能正确返回。问题的关键是无论我如何修改电脑时间格式,哪怕数据库中显示的就是'08-02-10 10:54:22',返回结果仍为0,查询软件我不能修改,请问有什么办法能解决该问题?多谢
convert(varchar(19),T.DateAndTime,120) = ('2010-08-02 10:54:22')
set @t = '08-02-10 10:54:22'
select @t
set @t = '08-02-10 10:54:22'
select @t
1,改sql 查询语句
2,改DB数据LZ选择哪个简单就操作哪个吧
1改数据库中的数据
2改程序中的SQL
3...是不可能的。
convert(varchar(19),T.DateAndTime,120) = ('2010-08-02 10:54:22')
set @s='08-02-10 10:54:22'select @s 2008-02-10 10:54:22.000 ---返回的是 年月日顺序(1 行受影响)
你实际的时间是这个 '2010-08-02 10:54:22'
set @s='08-02-99 10:54:22' -- 试想,你改下年份为99年,你再执行下,select @s --就报错了 ,说明根本不是时间格式
消息 242,级别 16,状态 3,第 2 行
从 char 数据类型到 datetime 数据类型的转换导致 datetime 值越界。
我觉得奇怪的是,数据库中保存的是datetime类型,可以随着电脑时间格式的改变而改变,比如电脑时间设为yyyy-MM-DD,显示的就是yyyy-MM-DD,若设成MM-DD-yyyy,则数据库中数据和查询条件中的日期是完全一样的。但是还是查不出来结果;若把查询条件中的日期改成yyyy-MM-DD,则会查出来结果,这是什么个情况?
会不会跟系统或者SQLserver的版本有关?数据是在英文版的环境下生成的,但是目前数据库服务器和软件都是中文版的
SET DATEFORMAT mdy --通过这个设置下declare @s datetime
set @s='08-02-99 10:54:22' select @s-----------------------
1999-08-02 10:54:22.000(1 行受影响)
这个和set dateformat mdy 效果是不是一样的?
如果你使用的是Excel这些,通过设定客户端格式确实有影响。
30 ymd 7 0 简体中文 Simplified Chinese 01,02,03,04,05,06,07,08,09,10,11,12 01,02,03,04,05,06,07,08,09,10,11,12 星期一,星期二,星期三,星期四,星期五,星期六,星期日 2052 2052
Select Convert(Datetime,Replace('08-02-10 10:54:22','-',' '),100)
-----------------------
2010-08-02 10:54:22.000(1 行受影响)
datediff可以胜任
但是用软件还是不行
我想是不是有个地方保存了这个dateformat,能否永久修改成为mdy?那样就能用了
软件我是不能改的,因为不是我开发的,并且也找不到开发人员
问题解决了,我修改了master库下的syslanguages中的简体中文的dateformat,之前是ymd,改成了mdy,然后把电脑的时间格式改成了MM-DD-yy,重启服务器,就OK了
结贴,再次表示感谢。