SQL Server:转换函数赢得';不能在数据类型时间上工作
我已经和这件事纠缠了好几个小时了 我有一组数据如下所示: 表名:SQL Server:转换函数赢得';不能在数据类型时间上工作,sql,sql-server-2008,Sql,Sql Server 2008,我已经和这件事纠缠了好几个小时了 我有一组数据如下所示: 表名:TEST_1 log\u date和log\u time当前都是varchar(200) 当前格式设置示例: log\u date=20131004 log\u time=113052:123 我想将log\u日期和log\u时间转换为更好的格式(尤其是时间) 这是我的密码 INSERT INTO TEST_2(log_date, log_time, process, log_type, detail_msg, decision
TEST_1
log\u date
和log\u time
当前都是varchar(200)
当前格式设置示例:
log\u date=20131004
log\u time=113052:123
log\u日期
和log\u时间
转换为更好的格式(尤其是时间)
这是我的密码
INSERT INTO TEST_2(log_date, log_time, process, log_type, detail_msg, decision_msg)
SELECT
CONVERT(date, log_date, 111), CONVERT(time, log_time, 114),
process, log_type, detail_msg, decision_msg
FROM TEST_1
现在,log\u日期
转换似乎工作正常,但当它试图转换log\u时间
味精241,第16级,状态1,第3行从字符串转换日期和/或时间时,转换失败 我尝试将数据类型更改为
varchar
,它没有给出错误,但也没有转换任何内容
谢谢你的帮助
感谢虽然
20131004
被认为是datetime
转换的有效varchar
值,113052:123
不是
因为您指定了114,所以它的格式应该类似于11:30:52:123
尝试一下:
CONVERT(
time,
substring(log_time,1,2)+':'+
substring(log_time,3,2)+':'+
substring(log_time,5,2)+
substring(log_time,7,4),
114)
一种方法。。。具体到字符串操作,我希望看到更多的值
SELECT
CONVERT(date, log_date, 111) AS log_date
, cast(
left(log_time,2)
+ ':' + substring(log_time,3,2)
+ ':' + substring(log_time,5,2)
+ right(log_time,4)
AS time) AS log_time
FROM test_1
CREATE TABLE Test_1
([Log_date] varchar(200), [Log_time] varchar(200))
;
INSERT INTO Test_1
([Log_date], [Log_time])
VALUES
('20131004', '113052:123')
;
| LOG_DATE | LOG_TIME |
|------------|------------------|
| 2013-10-04 | 11:30:52.1230000 |
[1]: http://sqlfiddle.com/#!3/1dff0/6
时间转换的格式为11:30:52:123,与您的格式不同。请告知此值的含义
113052:123
。。这就是小时/分钟/秒等部分。你知道时间单位是多少吗?或者知道“113052:123”在典型的24小时记数法中是什么意思?6位数字:3位数字至少对我来说是新的;也许你可以选择max(log_time)来告诉我们当前持有的最大值?大家好,113052:123=hh:mm:ss:msss在24小时时钟上。我希望它是11:30:52:123或类似的东西选择MAX是224114:672银行地理-我想我要找的是如何获得11:30:52:123的最终状态。谢谢,我甚至没有想过沿着子字符串路线走!谢谢你,我甚至没想过要沿着子串路线走!