2013-04-18 15 views
6

Jak przekonwertować format czasu "10:02:22 PM" na format datownika SQL Server.Konwersja Varchar na czas w SQL Server

Mam kolumnę takich danych. Zaimportowałem tę kolumnę z pliku CSV i teraz chcę ją przekonwertować na format DateTime, aby móc korzystać z funkcji Data Time.

Chcę móc wstawić tę kolumnę do innej tabeli z poprawnym formatem DateTime.

+0

Czy przestrzeń w tym czasie jest rzeczywiście obecna? – RichardTheKiwi

+0

Wartości daty i czasu są przechowywane w DB bez żadnego formatu. Jest to data i czas formatowania aplikacji klienta. –

+0

@RichardTheKiwi: Tak, spacja jest obecna przed AM/PM. – SarangArd

Odpowiedz

1

Nie trzeba konwertować. Niejawna obsada występuje podczas korzystania

INSERT otherTable 
SELECT ....., timeAsVarchar, ... 
    FROM csvTable 

Jeżeli wszystkie dane czasowe (prowadzące miejsca lub nie) jest parsowalnym z łańcucha, zapytanie będzie działał pięknie. Jeśli jednak istnieje możliwość złego lub pustym danych, które nie mogą być zamieniane na jakiś czas przetestować najpierw

INSERT otherTable 
SELECT ....., CASE WHEN ISDATE(timeAsVarchar)=1 THEN timeAsVarchar END, ... 
    FROM csvTable 

ELSE NULL implikuje więc zostawiłem ją.

+0

Konwersja niejawnych rzutów kończy się niepowodzeniem i pojawia się błąd "Konwersja nie powiodła się podczas konwersji daty i/lub czasu z ciągu znaków." Co mam zrobić? Jak zdefiniować kolumnę Czas w "innej tabeli"? ? – SarangArd

2

Użyj tego linku: http://msdn.microsoft.com/en-us/library/ms187928.aspx.

Tylko dla konwersji czasu ...

SELECT CONVERT(TIME, '10:00:22 PM'); 

daje następujące wyjście ...

22:00:22.000000 

konwersja czas z datą i czasem ...

SELECT CONVERT(DATETIME, '10:00:22 PM'); 

daje następujące wyjście ...

1900-01-01 22:00:22.0000 

Uwaga: Dla datetime musisz podać konkretną datę jako dane wejściowe, w przeciwnym wypadku rozważy domyślną datę wieku.

+0

jakiegoś powodu Konwersja nie powiedzie się, gdy próbuję przekonwertować kolumnę. Ale to się powiedzie, kiedy to zrobić indywidualnie. mogę wiedzieć dlaczego? – SarangArd

+0

jest w stanie konwertować wartości rano, ale nie wartości PM. to nieprawdaż” jest w stanie przekonwertować "00:00:01" na "00:59:59" Ale może przekonwertować "01:00:00 PM" Czy możesz mi w tym pomóc? – SarangArd

+1

W systemie 12 godzin nie ma 00 godzin, to jest powód, dla którego rozmowa się nie udała. –

Powiązane problemy