关于VB和SQL之间日期格式的问题

在SQL中创建数据项为DATETIME类型,然后用语句:IfIsDate(Text1(6).Text)=FalseThenMsgBox"请输入正确的日期格式"判断数据类型... 在SQL中创建数据项为DATETIME类型,然后用语句:
If IsDate(Text1(6).Text) = False Then
MsgBox "请输入正确的日期格式"
判断数据类型,但是当输入189/01/01往SQL中添加数据的时候就会出现值越界的错误,而不是按我设想的报 请输入正确的日期格式 。要怎么办啊?
我的意思是:用VB往SQL里面添加时间类型数据,当输入非日期数据时 提示"请输入正确的日期格式" 当输入 日期数据时 显示添加成功 问题是 当输入189/01/01时 它不提示格式错误 也不是添加成功,而是报错“char数据转换到datetime数据导致datetime值越界”。 这种情况要怎么修改语句,让它提示"请输入正确的日期格式"啊? 不知道我有没有表达清楚
展开
 我来答
匿名用户
2008-07-22
展开全部
sql的日期格式和你选的国家代码有关系!

SQL Server 日期格式转换(Convert用法)DBCC命令详解
SQL Server 日期格式转换(Convert用法
SQL Server中,Convert可以将日期转换成不同格式,格式控制是由CONVERT (data_type[(length)], expression [, style])中的style来完成的。下面列出了style取各种值时的效果:

在表中,左侧的两列表示将 datetime 或 smalldatetime 转换为字符数据的 style 值。给 style 值加 100,可获得包括世纪数位的四位年份 (yyyy)。

不带世纪数位 (yy) 带世纪数位 (yyyy)
标准
输入/输出**
- 0 或 100 (*) 默认值 mon dd yyyy hh:miAM(或 PM)
1 101 美国 mm/dd/yyyy
2 102 ANSI yy.mm.dd
3 103 英国/法国 dd/mm/yy
4 104 德国 dd.mm.yy
5 105 意大利 dd-mm-yy
6 106 - dd mon yy
7 107 - mon dd, yy
8 108 - hh:mm:ss
- 9 或 109 (*) 默认值 + 毫秒 mon dd yyyy hh:mi:ss:mmmAM(或 PM)
10 110 美国 mm-dd-yy
11 111 日本 yy/mm/dd
12 112 ISO yymmdd
- 13 或 113 (*) 欧洲默认值 + 毫秒 dd mon yyyy hh:mm:ss:mmm(24h)
14 114 - hh:mi:ss:mmm(24h)
- 20 或 120 (*) ODBC 规范 yyyy-mm-dd hh:mm:ss[.fff]
- 21 或 121 (*) ODBC 规范(带毫秒) yyyy-mm-dd hh:mm:ss[.fff]
- 126(***) ISO8601 yyyy-mm-dd Thh:mm:ss:mmm(不含空格)
- 130* 科威特 dd mon yyyy hh:mi:ss:mmmAM
- 131* 科威特 dd/mm/yy hh:mi:ss:mmmAM

* 默认值(style 0 或 100、9 或 109、13 或 113、20 或 120、21 或 121)始终返回世纪数位 (yyyy)。
** 当转换为 datetime 时输入;当转换为字符数据时输出。
*** 专门用于 XML。对于从 datetime 或 smalldatetime 到 character 数据的转换,输出格式如表中所示。对于从 float、money 或 smallmoney 到 character 数据的转换,输出等同于 style 2。对于从 real 到 character 数据的转换,输出等同于 style 1。

重要 默认情况下,SQL Server 根据截止年份 2049 解释两位数字的年份。即,两位数字的年份 49 被解释为 2049,而两位数字的年份 50 被解释为 1950。许多客户端应用程序(例如那些基于 OLE 自动化对象的客户端应用程序)都使用 2030 作为截止年份。SQL Server 提供一个配置选项("两位数字的截止年份"),借以更改 SQL Server 所使用的截止年份并对日期进行一致性处理。然而最安全的办法是指定四位数字年份。

当从 smalldatetime 转换为字符数据时,包含秒或毫秒的样式将在这些位置上显示零。当从 datetime 或 smalldatetime 值进行转换时,可以通过使用适当的 char 或 varchar 数据类型长度来截断不需要的日期部分。
回答者:uestczcs - 秀才 二级 7-21 13:59
SQL中的数据这样写的
"2008-12-1"
添加是按这个格式

&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
您补充的问题是这样的,SQL中的日期字段只能保存17几几年以后的日期,具体记不清了,再早就不能存入,在它的范围之外了,这主要是由于做为一个日期字段,它是一个固定的位数,能存入的数据只能在这个位数的范围内,它没有说您的日期是错的,只是超过它保存的范围了.
要解决它,您只有在事先用VB代码进行检查,无错后再进行保存.
用CDATE()函数转换一下,如不错就可以存入,否则就不要进入存储过程.
回答者: 湘湖泛舟 - 同进士出身 六级 7-21 16:31
uestczcs
2008-07-21 · TA获得超过448个赞
知道答主
回答量:139
采纳率:0%
帮助的人:105万
展开全部
sql的日期格式和你选的国家代码有关系!

SQL Server 日期格式转换(Convert用法)DBCC命令详解
SQL Server 日期格式转换(Convert用法
SQL Server中,Convert可以将日期转换成不同格式,格式控制是由CONVERT (data_type[(length)], expression [, style])中的style来完成的。下面列出了style取各种值时的效果:

在表中,左侧的两列表示将 datetime 或 smalldatetime 转换为字符数据的 style 值。给 style 值加 100,可获得包括世纪数位的四位年份 (yyyy)。

不带世纪数位 (yy) 带世纪数位 (yyyy)
标准
输入/输出**
- 0 或 100 (*) 默认值 mon dd yyyy hh:miAM(或 PM)
1 101 美国 mm/dd/yyyy
2 102 ANSI yy.mm.dd
3 103 英国/法国 dd/mm/yy
4 104 德国 dd.mm.yy
5 105 意大利 dd-mm-yy
6 106 - dd mon yy
7 107 - mon dd, yy
8 108 - hh:mm:ss
- 9 或 109 (*) 默认值 + 毫秒 mon dd yyyy hh:mi:ss:mmmAM(或 PM)
10 110 美国 mm-dd-yy
11 111 日本 yy/mm/dd
12 112 ISO yymmdd
- 13 或 113 (*) 欧洲默认值 + 毫秒 dd mon yyyy hh:mm:ss:mmm(24h)
14 114 - hh:mi:ss:mmm(24h)
- 20 或 120 (*) ODBC 规范 yyyy-mm-dd hh:mm:ss[.fff]
- 21 或 121 (*) ODBC 规范(带毫秒) yyyy-mm-dd hh:mm:ss[.fff]
- 126(***) ISO8601 yyyy-mm-dd Thh:mm:ss:mmm(不含空格)
- 130* 科威特 dd mon yyyy hh:mi:ss:mmmAM
- 131* 科威特 dd/mm/yy hh:mi:ss:mmmAM

* 默认值(style 0 或 100、9 或 109、13 或 113、20 或 120、21 或 121)始终返回世纪数位 (yyyy)。
** 当转换为 datetime 时输入;当转换为字符数据时输出。
*** 专门用于 XML。对于从 datetime 或 smalldatetime 到 character 数据的转换,输出格式如表中所示。对于从 float、money 或 smallmoney 到 character 数据的转换,输出等同于 style 2。对于从 real 到 character 数据的转换,输出等同于 style 1。

重要 默认情况下,SQL Server 根据截止年份 2049 解释两位数字的年份。即,两位数字的年份 49 被解释为 2049,而两位数字的年份 50 被解释为 1950。许多客户端应用程序(例如那些基于 OLE 自动化对象的客户端应用程序)都使用 2030 作为截止年份。SQL Server 提供一个配置选项("两位数字的截止年份"),借以更改 SQL Server 所使用的截止年份并对日期进行一致性处理。然而最安全的办法是指定四位数字年份。

当从 smalldatetime 转换为字符数据时,包含秒或毫秒的样式将在这些位置上显示零。当从 datetime 或 smalldatetime 值进行转换时,可以通过使用适当的 char 或 varchar 数据类型长度来截断不需要的日期部分。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
湘湖泛舟
2008-07-21 · TA获得超过1076个赞
知道大有可为答主
回答量:833
采纳率:0%
帮助的人:900万
展开全部
SQL中的数据这样写的
"2008-12-1"
添加是按这个格式

&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
您补充的问题是这样的,SQL中的日期字段只能保存17几几年以后的日期,具体记不清了,再早就不能存入,在它的范围之外了,这主要是由于做为一个日期字段,它是一个固定的位数,能存入的数据只能在这个位数的范围内,它没有说您的日期是错的,只是超过它保存的范围了.
要解决它,您只有在事先用VB代码进行检查,无错后再进行保存.
用CDATE()函数转换一下,如不错就可以存入,否则就不要进入存储过程.
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式