Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL Server:转换函数赢得';不能在数据类型时间上工作_Sql_Sql Server 2008 - Fatal编程技术网

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的最终状态。谢谢,我甚至没有想过沿着子字符串路线走!谢谢你,我甚至没想过要沿着子串路线走!