e*********y 发帖数: 29 | 1 environment: sql server 2005
table里面有一个field是char类型.
里面的数剧sample是 112300 和 12499
现在想把这两种转换的日期的形式.比如说 11/23/00 和 01/24/99
都试过 convert datetime 好像不行. 有没有解? | B*****g 发帖数: 34098 | 2 为啥要convert date?直接substring不行吗?
【在 e*********y 的大作中提到】 : environment: sql server 2005 : table里面有一个field是char类型. : 里面的数剧sample是 112300 和 12499 : 现在想把这两种转换的日期的形式.比如说 11/23/00 和 01/24/99 : 都试过 convert datetime 好像不行. 有没有解?
| g***l 发帖数: 18555 | 3 笨办法SUBSTRING year() month() day(),然后CONVERT, 查查CONVERT DATETIME,有
没有MMDDYY的 | i****a 发帖数: 36252 | 4 12499
how do you know if it's 1/24/99 or 12/4/99?
【在 e*********y 的大作中提到】 : environment: sql server 2005 : table里面有一个field是char类型. : 里面的数剧sample是 112300 和 12499 : 现在想把这两种转换的日期的形式.比如说 11/23/00 和 01/24/99 : 都试过 convert datetime 好像不行. 有没有解?
| g***l 发帖数: 18555 | 5 必须填满才行010101 = 1/1/2011,否则就是垃圾数据
【在 i****a 的大作中提到】 : 12499 : how do you know if it's 1/24/99 or 12/4/99?
| i****a 发帖数: 36252 | 6 basic idea:
@year = right(YourDateField, 2)
@day = left(right(YourDateField, 4), 2) --look at my question in last post
@month = left(YourDateField, 2) --look at my question in previous post
@date = convert(datetime, @month + '/' + @day + '/' + @year, 101)
【在 e*********y 的大作中提到】 : environment: sql server 2005 : table里面有一个field是char类型. : 里面的数剧sample是 112300 和 12499 : 现在想把这两种转换的日期的形式.比如说 11/23/00 和 01/24/99 : 都试过 convert datetime 好像不行. 有没有解?
| n********6 发帖数: 1511 | 7 One scenario:
12499 is originally in int format which is actually 012499, and later loaded to DB as char format.
【在 i****a 的大作中提到】 : 12499 : how do you know if it's 1/24/99 or 12/4/99?
| B*****g 发帖数: 34098 | 8 你需要一个function
这个function可以处理4-8个字节(假设3-和9+直接return error, 当然要考虑
空格呀,月用文字呀基本就会被搞死)
这个function需要设定规则,像12499这种情况如何处理。
loaded to DB as char format.
【在 n********6 的大作中提到】 : One scenario: : 12499 is originally in int format which is actually 012499, and later loaded to DB as char format.
| a9 发帖数: 21638 | 9 print convert(datetime, convert(varchar,(12499%10000)/100) + '/' + convert(
varchar,12499/10000) + '/' + convert(varchar,12499%100) + ' 00:00:00' ,3)
loaded to DB as char format.
【在 n********6 的大作中提到】 : One scenario: : 12499 is originally in int format which is actually 012499, and later loaded to DB as char format.
| e*********y 发帖数: 29 | 10 如果是int类型的话很容易解. 但现在是char类型.
我的解决办法是如果遇见12499,用STUFF补0然后用substring.
如果是112300就直接用substring. (12499是01/24/99(MMDDYY),not 12/04/99)
见笑. | B*****g 发帖数: 34098 | 11 你能保证你处理的包含所有数据类型吗?
【在 e*********y 的大作中提到】 : 如果是int类型的话很容易解. 但现在是char类型. : 我的解决办法是如果遇见12499,用STUFF补0然后用substring. : 如果是112300就直接用substring. (12499是01/24/99(MMDDYY),not 12/04/99) : 见笑.
| i****a 发帖数: 36252 | 12 convert(xx/xx/xx)
where isdate(xx/xx/xx) = 1
【在 B*****g 的大作中提到】 : 你能保证你处理的包含所有数据类型吗?
| e*********y 发帖数: 29 | 13 你能保证你处理的包含所有数据类型吗?
这个取决于你的table field是哪种类型吧.
substring (STUFF (datafield,1,0,'0'),1,2)+'/'+substring (STUFF (datafield,1,
0,'0'),3,2)+'/'+substring (STUFF (datafield,1,0,'0'),5,2) | B*****g 发帖数: 34098 | 14 你能保证年不是头两位吗?
1,
【在 e*********y 的大作中提到】 : 你能保证你处理的包含所有数据类型吗? : 这个取决于你的table field是哪种类型吧. : substring (STUFF (datafield,1,0,'0'),1,2)+'/'+substring (STUFF (datafield,1, : 0,'0'),3,2)+'/'+substring (STUFF (datafield,1,0,'0'),5,2)
|
|