字符串转换成日期类型的问题。 放到查询分析器 点击执行 出现一下错误。服务器: 消息 241,级别 16,状态 1,行 1从字符串转换为 datetime 时发生语法错误。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 ISDATE确定输入表达式是否为有效的日期。语法ISDATE ( expression ) 参数expression一个表达式,将要验证它是否为一个日期。expression 是任何返回 varchar 数据类型的表达式。 返回类型int注释如果输入表达式是有效的日期,那么 ISDATE 返回 1;否则,返回 0。下表显示一组示例所得到的返回值。列值 (varchar) ISDATE 返回值 NULL 0 Abc 0 100、-100、100 a 或 100.00 0 .01 0 -100.1234e-123 0 .231e90 0 $100.12345、- $100.12345 或 $-1000.123 0 as100 或 1a00 0 1995-10-1、1/20/95、1995-10-1 12:00pm、Feb 7 1995 11:00pm、1995-10-1 或者 1/23/95 1 13/43/3425 或 1995-10-1a 0 $1000、$100 或 $100 a 0 示例A. 使用 ISDATE 检查变量下面的示例检查 @datestring 局部变量是否为有效的日期。DECLARE @datestring varchar(8)SET @datestring = '12/21/98'SELECT ISDATE(@datestring)下面是结果集:----------- 1 B. 使用 ISDATE 检查列是否为有效的日期下面的示例创建 test_dates 表,并且插入两个值。使用 ISDATE 以确定列中的值是否为日期。USE tempdbCREATE TABLE test_dates (Col_1 varchar(15), Col_2 datetime)GOINSERT INTO test_dates VALUES ('abc', 'July 13, 1998')GOSELECT ISDATE(Col_1) AS Col_1, ISDATE(Col_2) AS Col_2 FROM test_dates下面是结果集:Col_1 Col_2 ----------------- --------------------0 1 按上述方法判断你的字符串类型的时间是否合法?可以加上条件isdate(时间字段) = 1将不合法的时间去掉. 就是说你先查查你的字段里面的时间(字符串类型)是否都是合法(正确)的.例如:表tb字段dt内容2008-12-29 --合法2008-12-30 --合法2008-12-31 --合法2008-12-32 --不合法2008-12-33 --不合法用isdate(dt) = 1 或 isdate(dt) = 0判断一下. try:BeginDate1 = Trim(BeginDate1) & " 00:00"EndDate1 = Trim(EndDate1) & " 00:00" 另外,convert(varchar,update_time)这里,你的update_time是什么字段类型,如果是datetime,改成 convert(varchar(10),update_time,120)如果你的update_time 是字串类型,并且格式如: 2008-1-1 或 2008-01-01 这样的值,那么语句直接改为If BeginDate1 <> "" And EndDate1 <> "" Then SQL = SQL & " and ( " & _ " DATEADD(dd,0,'" & BeginDate1 & "') <= update_time " & _ " And DATEADD(dd,0,'" & EndDate1 & "') >= update_time ) " & _ " Or ( " & _ " DATEADD(dd,0,'" & EndDate1 & "') < '" & BeginDate1 & "' " & _ " And update_time> DATEADD(dd,0,'" & BeginDate1 & "') )" & _ " Or ( " & _ " DATEADD(dd,0,'" & EndDate1 & "') < '" & BeginDate1 & "' " & _ " And update_time < DATEADD(dd,0,'" & EndDate1 & "') )"End If [求助]根据不同地区不同级别列出动态统计数据 请问大家,怎样写这样的sql语句!!! sql server2000装完不能连接 求sql语句 哪里有关于MS SQL扩展存储过程的详细说明?? 请高手指点SQLSERVER的底层结构问题 在企业管理器中建表,怎么设VARCHAR类型字段的默认值为空字符?不是“NULL”,是“” 求助一条SQL语句 100万数据面对上万个站点,每个站点可以共用这100万数据且有自己独立的排序规则如何设计DB?? 如何备份sql 2000数据,并想删除以前的部分旧的数据 还是关于表分区的问题 高分求解 向数据表中的一列随机插入数据
确定输入表达式是否为有效的日期。语法
ISDATE ( expression ) 参数
expression一个表达式,将要验证它是否为一个日期。expression 是任何返回 varchar 数据类型的表达式。 返回类型
int注释
如果输入表达式是有效的日期,那么 ISDATE 返回 1;否则,返回 0。下表显示一组示例所得到的返回值。列值 (varchar) ISDATE 返回值
NULL 0
Abc 0
100、-100、100 a 或 100.00 0
.01 0
-100.1234e-123 0
.231e90 0
$100.12345、- $100.12345 或 $-1000.123 0
as100 或 1a00 0
1995-10-1、1/20/95、1995-10-1 12:00pm、Feb 7 1995 11:00pm、1995-10-1 或者 1/23/95 1
13/43/3425 或 1995-10-1a 0
$1000、$100 或 $100 a 0
示例
A. 使用 ISDATE 检查变量
下面的示例检查 @datestring 局部变量是否为有效的日期。DECLARE @datestring varchar(8)
SET @datestring = '12/21/98'
SELECT ISDATE(@datestring)下面是结果集:-----------
1 B. 使用 ISDATE 检查列是否为有效的日期
下面的示例创建 test_dates 表,并且插入两个值。使用 ISDATE 以确定列中的值是否为日期。USE tempdb
CREATE TABLE test_dates (Col_1 varchar(15), Col_2 datetime)
GO
INSERT INTO test_dates VALUES ('abc', 'July 13, 1998')
GO
SELECT ISDATE(Col_1) AS Col_1, ISDATE(Col_2) AS Col_2
FROM test_dates下面是结果集:Col_1 Col_2
----------------- --------------------
0 1
表tb
字段dt
内容
2008-12-29 --合法
2008-12-30 --合法
2008-12-31 --合法
2008-12-32 --不合法
2008-12-33 --不合法用isdate(dt) = 1 或 isdate(dt) = 0判断一下.
BeginDate1 = Trim(BeginDate1) & " 00:00"
EndDate1 = Trim(EndDate1) & " 00:00"
另外,convert(varchar,update_time)
这里,你的update_time是什么字段类型,如果是datetime,改成 convert(varchar(10),update_time,120)
如果你的update_time 是字串类型,并且格式如: 2008-1-1 或 2008-01-01 这样的值,
那么语句直接改为If BeginDate1 <> "" And EndDate1 <> "" Then
SQL = SQL & " and ( " & _
" DATEADD(dd,0,'" & BeginDate1 & "') <= update_time " & _
" And DATEADD(dd,0,'" & EndDate1 & "') >= update_time ) " & _
" Or ( " & _
" DATEADD(dd,0,'" & EndDate1 & "') < '" & BeginDate1 & "' " & _
" And update_time> DATEADD(dd,0,'" & BeginDate1 & "') )" & _
" Or ( " & _
" DATEADD(dd,0,'" & EndDate1 & "') < '" & BeginDate1 & "' " & _
" And update_time < DATEADD(dd,0,'" & EndDate1 & "') )"
End If