2015-06-16 20 views
0

我已經運行已在我tblRota.StartTimetblRota.EndTime格式更新多條記錄進口900和1700SQL服務器:格式700隨着時間的

我怎樣才能重新格式化這些以09:00至17:00 ?

這兩列的數據類型是varchar

謝謝。

+2

什麼版本的SQL Server您使用的是?你想讓它們成爲一個實際的'時間'數據類型嗎?或者只是格式化爲'00:00'字符?假設您擁有數據庫的控制權,您應該首先使用正確的數據類型。 – LittleBobbyTables

回答

1

您可以使用此查詢:

select stuff(right('0' + replace([StartTime], ':', ''), 4), 3, 0, ':'), 
     stuff(right('0' + replace([EndTime], ':', ''), 4), 3, 0, ':') 
from [tblRota] 

的步驟是:

  1. 刪除:replace([StartTime], ':', '')
  2. 獲取時間4位數字:right('0' + <3Or4DigitTime>, 4)
  3. 插入:stuff(<4DigitTime>, 3, 0, ':')
+0

這可以正常工作,但有些已經正確格式化,並且如果它們是正確的,它們就會出現如8 :: 00。我怎樣才能改變它忽略正確的? –

+0

@JoshCooper - 沒有在規範中指定:) =>更新了我的回答 –

+0

感謝您的更新使其完美工作! –

1

使用一些字符串操作:

UPDATE tblRota 
SET StartTime = LEFT(RIGHT('0'+StartTime , 4),2)+':'+RIGHT(StartTime ,2), 
    EndTime = LEFT(RIGHT('0'+EndTime , 4),2)+':'+RIGHT(EndTime ,2) 
+0

這工作正常,但一些已格式正確,他們出現如8 :: 00,如果他們是正確的開始。我怎樣才能改變它忽略正確的? –