首页 新闻 会员 周边

数字与日期转换问题

0
[已关闭问题]

有办法的朋友请先看清:一个已经存在多年的SQL2000数据库,本人不想改变数据库任何结构。

问题:数据库的日期是 Decimal 数字型,可以用convert(datetime,rtrim(Date1),120)从数据库转换出来,没有问题。但是,头痛的是操作员没有按规定都填写。。。有些填写了,有些没有填写,而且有些为NULL或者数值0。所有用以上方法转换有错误。

注:如果先不改变读出数据库的数值转换成String类型,就不知道用什么来转换日期了。。。

用d as date ;        d=Format(Date1, "yyyy-MM-dd")    转换失败!

用CDate(date1)   转换失败!

用DateValue(date1) 转换失败!

用DateSerial(date1) 先把date1转换成字符串String类型然后转日期 也失败。。。。

哪位有什么好办法?

XBW的主页 XBW | 菜鸟二级 | 园豆:404
提问于:2009-11-18 22:12
< >
分享
其他回答(4)
0

“有些填写了,有些没有填写,而且有些为NULL或者数值0”

说明你的数据本身就不符合转换成日期的前提条件,没有办法处理的。

清海扬波 | 园豆:825 (小虾三级) | 2009-11-18 23:26
首先谢谢你的解答。数据库是有问题,而且不标准。但是,既然有问题我还是想找出最好的解决办法。“没有做不到,只有想不到”只是方法好与坏、简单和复杂问题。
支持(0) 反对(0) XBW | 园豆:404 (菜鸟二级) | 2009-11-19 10:23
那只能采取楼下的方法了。
支持(0) 反对(0) 清海扬波 | 园豆:825 (小虾三级) | 2009-11-19 16:40
0

Decimal太强了!!

可否这样解决:

1、不超过四位的加后加0101,或前加1900

2、把为null或0的转换为19000101

3、尝试转换为DateTime,

如果以上还不能转换成功·。

邀月 | 园豆:25475 (高人七级) | 2009-11-19 09:34
有数据当然转换不成问题,问题是查询中判断后再加数据好像太麻烦了。。。最好是查询出来后来成功转换最好^@^,如果实在没有办法就只能按你的方法了。。。现在再==看看还有其他方法没有。。。。
支持(0) 反对(0) XBW | 园豆:404 (菜鸟二级) | 2009-11-19 10:08
0

可以直接在前台就验证了就可以啊。。

不过向你这种转换是会有问题的,最好是在有日期格式的值如果是没有输入的话就直接给一个默认日期值。

这样是最好的办法。。Ok...

zhangpeng1008 | 园豆:283 (菜鸟二级) | 2009-11-19 09:59
你的方法和楼上的方法类似。。。。而且还简单一点点。。。呵呵,谢谢!再看看再说
支持(0) 反对(0) XBW | 园豆:404 (菜鸟二级) | 2009-11-19 10:11
你的方法对没有日期的NULL或者0是很有用,对已经有日期的就存在转换问题了。。。不成功了
支持(0) 反对(0) XBW | 园豆:404 (菜鸟二级) | 2009-11-19 10:15
0

前台用正则去验证,数据库里用触发器去判断吧,插入或者更新之前的时候先判断格式然后看如果能转换过来就转,转不过来就给用户提示格式错误吧

死神的背影 | 园豆:667 (小虾三级) | 2009-11-19 10:41
呵呵。。。还是谢了
支持(0) 反对(0) XBW | 园豆:404 (菜鸟二级) | 2009-11-19 15:38
0

多年前做过类似的转换,基本思路就是:先进行各种条件判断,格式符合要求的直接转换,不符合的(如null,0等)可以赋予一个默认值,比如DateTime.MinValue。

麒麟.NET | 园豆:3614 (老鸟四级) | 2009-11-19 13:27
思路和方法都正确,只是这样太麻烦。与二楼的老兄道理一样。。。==实在没有简单方法就只有这样的了。。。
支持(0) 反对(0) XBW | 园豆:404 (菜鸟二级) | 2009-11-19 15:43
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册