Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.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_Sql - Fatal编程技术网

正确时间SQL

正确时间SQL,sql,Sql,我在其中一个表中有这样的时间格式:HH:MM SS 时间列的示例是(像这样,我有100万条记录): 我希望格式为:HH:MM:SS Time ------- 10:18:55 10:20:17 07:12:23 11:38:27 14:16:51 10:24:16 我为此编写的查询如下: DECLARE @Query VARCHAR(MAX) DECLARE @colname VARCHAR(max) DECLARE colcursor CURSOR FOR SELECT t

我在其中一个表中有这样的时间格式:HH:MM SS

时间列的示例是(像这样,我有100万条记录):

我希望格式为:HH:MM:SS

 Time
 -------
 10:18:55
 10:20:17
 07:12:23
 11:38:27
 14:16:51
 10:24:16
我为此编写的查询如下:

DECLARE @Query VARCHAR(MAX)
DECLARE @colname VARCHAR(max)
DECLARE colcursor CURSOR
FOR
 SELECT time_1 FROM table1 WHERE time_1 like '[0-9][0-9]:[0-9][0-9] [0-9]
 [0-9]'
OPEN colcursor;
FETCH NEXT FROM colcursor INTO @colname
WHILE @@FETCH_STATUS = 0

 SET @Query = 'update table1 set time_1' + '=' + 'cast(cast(replace(' + 
   @colname + ','+ ' ' + ',' + ':'+ ') as time) as char(8))'

 EXECUTE (@Query);
  FETCH NEXT FROM colcursor INTO @colname;

CLOSE colcursor;
DEALLOCATE colcursor;

问题是这是继续执行,而不改变所需的输出。我不认为,这需要更多的时间。有谁能帮我获取所需的输出(即HH:MM:SS格式)?

我不知道你为什么要使用动态sql。 它似乎比你写的要简单得多

试试这个

Update table1
set time_1 = replace(time_1, ' ', ':')

您的示例和预期的是相同的…?您的时间列是什么数据类型?这是非标准SQL。您使用的是哪种数据库管理系统?
UPDATE table1 
SET time_1  =REPLACE(time_1 ,' ',':')
WHERE time_1 like '[0-9][0-9]:[0-9][0-9] [0-9][0-9]'
Update table1
set time_1 = replace(time_1, ' ', ':')
IF OBJECT_ID('Tempdb..#Temp') IS NOT NULL
Drop  table #Temp
;With cte([Time])
AS
(
SELECT '10:18 55' UNion all
SELECT '10:20 17' UNion all
SELECT '07:12 23' UNion all
SELECT '11:38 27' UNion all
SELECT '14:16 51' UNion all
SELECT '10:24 16' 
) 
SELECT * INTO #Temp From cte

SELECT * FRom #Temp --check time data Before Updating the table

Update I
SET [Time] = STUFF(i.[Time],CHARINDEX(' ',i.[Time]),1,':')
From #Temp I
Inner join #Temp O
On i.[Time]=o.[Time]

SELECT * FRom #Temp ---check time data After Updating the table