标题:数据类型转换
只看楼主
thjaxd
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2006-5-16
 问题点数:0 回复次数:9 
数据类型转换
我有一个数据库,苦于不能把nvarchar(8)类型的出生日期和参加工作日期转换成datetime类型,请大侠帮帮忙啊,多谢!
补充一下:出生日期格式为197601,198605,等等 nvarchar(8)
发生错误为:
服务器: 消息 8115,级别 16,状态 2,行 1
将 expression 转换为数据类型 datetime 时发生算术溢出错误。
语句已终止。
或者
服务器: 消息 242,级别 16,状态 3,行 1
从 char 数据类型到 datetime 数据类型的转换导致 datetime 值越界。
语句已终止。

[此贴子已经被作者于2006-11-22 0:34:41编辑过]

搜索更多相关主题的帖子: 数据类型 服务器 数据库 datetime nvarchar 
2006-11-21 23:39
angeloc
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:36
帖 子:1353
专家分:0
注 册:2006-11-21
得分:0 
可以手写代码转换为DATETIME匹配的模式!

老牛明知夕阳晚,不用扬鞭自奋蹄; Angelo\'s BLOG
2006-11-22 11:09
thjaxd
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2006-5-16
得分:0 
比如说什么样的模式啊?联机丛书没怎么看懂

强中手中自还有强中手,向强中手学习,致敬!
2006-11-22 12:09
thjaxd
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2006-5-16
得分:0 
我的数据库里面的日期都是类型的,都想转一下,就是不会转,好心大侠指点一下啊,谢谢

强中手中自还有强中手,向强中手学习,致敬!
2006-11-22 12:11
angeloc
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:36
帖 子:1353
专家分:0
注 册:2006-11-21
得分:0 
比如你库里的日期模式是"yy-mm-dd",那么你把数据处理拼接为相同格式就可以了
通常很多日期是"yy-mm-dd hh:mm:ss"这种类型的,那你也同样处理一下,只要与格式匹配就可以,具体方法看你的需求和数据格式

老牛明知夕阳晚,不用扬鞭自奋蹄; Angelo\'s BLOG
2006-11-22 12:17
初学Delphi
Rank: 3Rank: 3
等 级:新手上路
威 望:9
帖 子:330
专家分:0
注 册:2006-4-4
得分:0 
string aaa = "19830615";
string bbb = aaa.Substring(0, 4);
string ccc = aaa.Substring(4, 2);
string ddd = aaa.Substring(6, 2);
aaa = bbb + "-" + ccc + "-" + ddd;
DateTime a = Convert.ToDateTime(aaa);
2006-11-22 16:56
thjaxd
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2006-5-16
得分:0 
我已经把所有的日期替换成格式如1983-06-15类型的了,但数据类型还是nvarchar(255),再像datetime类型转换时候还是错误啊?
谁能帮我举个成功了的例子么?
select id,name,convert(datetime(8),cs) from table1 都不行
另外:update table1 set cs=cast(cs as datetime(8)) 这句有什么错误么?

错误为:
服务器: 消息 291,级别 16,状态 1,行 1
CAST 或 CONVERT: 为类型 'datetime' 指定的特性无效

[此贴子已经被作者于2006-11-22 21:48:11编辑过]


强中手中自还有强中手,向强中手学习,致敬!
2006-11-22 21:44
初学Delphi
Rank: 3Rank: 3
等 级:新手上路
威 望:9
帖 子:330
专家分:0
注 册:2006-4-4
得分:0 

好像直接用update table1 set cs='"+你取出来的变量(1983-06-15)+"'
不用类型转换
就可以吧?

2006-11-23 08:48
angeloc
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:36
帖 子:1353
专家分:0
注 册:2006-11-21
得分:0 

写入数据时候不需要转换,我说的转换是在你写数据前,如果数据已经是“YY-MM-DD”这种与你库中DATETIME匹配的格式你就直接写就可以了,只有你要写入的数据与DATETIME不匹配才需要在写如前写代码转换为匹配格式。


老牛明知夕阳晚,不用扬鞭自奋蹄; Angelo\'s BLOG
2006-11-23 09:21
thjaxd
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2006-5-16
得分:0 

首先,谢谢各位:
其次,不好意思了。
可能是没说明白:
就是我现已有个数据库(内含7000条记录)
aaaa 字段 id,name,cs nvarchar(255),cj nvarchar(255)
想得到数据库id,name,cs datetime(8),cj datetime(8)
以便于用datediff (yy,[cs],[cj]) 算出 age (是参加工作时候的年龄)



强中手中自还有强中手,向强中手学习,致敬!
2006-11-23 20:17



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-104566-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025702 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved