开发环境 vs2008 + sql 2008tb_a
ID DT1
001 Jun 3 2011 6:34PM
002 07/24/2011 5:02:34
003 Jun 3 2011 6:33PM
004 06/21/2011 12:49:33
005 Jun 3 2011 6:23PM
006 07/17/2011 22:09:58ID的类型为 varchar(10)
DT1的类型为 varchar(30)现在我根据DT1转换为时间查询条件:
SqlStr= select * from tb_a where convert(datetime, DT1) >='05/01/2011 00:00:00' and DT1 < ='08/25/2011 23:00:00'该语句在mssql中查询能正确得到数据。但是到我系统中就报错。。Dim SQLCmd As New SqlCommand
SQLCmd.Connection = OpenConnect()
SQLCmd.CommandText = SqlStr
Dim Reader As SqlClient.SqlDataReader = SQLCmd.ExecuteReader
Reader.Read() ///这里就报错"从字符串转换日期和/或时间时,转换失败。"请问是什么原因?
ID DT1
001 Jun 3 2011 6:34PM
002 07/24/2011 5:02:34
003 Jun 3 2011 6:33PM
004 06/21/2011 12:49:33
005 Jun 3 2011 6:23PM
006 07/17/2011 22:09:58ID的类型为 varchar(10)
DT1的类型为 varchar(30)现在我根据DT1转换为时间查询条件:
SqlStr= select * from tb_a where convert(datetime, DT1) >='05/01/2011 00:00:00' and DT1 < ='08/25/2011 23:00:00'该语句在mssql中查询能正确得到数据。但是到我系统中就报错。。Dim SQLCmd As New SqlCommand
SQLCmd.Connection = OpenConnect()
SQLCmd.CommandText = SqlStr
Dim Reader As SqlClient.SqlDataReader = SQLCmd.ExecuteReader
Reader.Read() ///这里就报错"从字符串转换日期和/或时间时,转换失败。"请问是什么原因?
并没有把DT1这个字段转换成日期,
改成:select ID,Convert(datetime,DT1) AS DT1 from ...
谢谢回答。。因为该系统的资料时直接通过excel导入 数据库表的
没有规范用户在excel中的时间格式,在导入数据库表中的时候只要用varchar类型..
那就在导入的时候转换成日期,
或者
导入时候保留字符串,然后增加一个日期字段,然后写个程序把字符串转换成日期,不能转换的就保留null
这样你也能清楚哪些格式不能正常转换的
SqlStr= select * from tb_a where convert(datetime, DT1) >=('05/01/2011 00:00:00'as datetime) and DT1 < =('08/25/2011 23:00:00' as datetime)这样你试试
LZ这个不可以这样比较吧
要转下型哦
2011-08-31 类型(yyyy-MM-dd)
这样再处理,应该就没事了。
(表和程序都统一用一种格式就行)