Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

6 sposobów konwersji ciągu na wartość daty/godziny w SQL Server

Jeśli musisz przekonwertować ciąg na wartość daty/godziny w SQL Server, masz kilka opcji. W tym poście opisuję sześć funkcji T-SQL, które pozwalają to zrobić.

Sześć funkcji to:

  • CAST()
  • CONVERT()
  • PARSE()
  • TRY_CAST()
  • TRY_CONVERT()
  • TRY_PARSE()

Poniżej znajduje się przykład, w jaki sposób można użyć tych funkcji do konwersji ciągu na typ danych typu data/godzina.

Funkcja CAST()

W tym przykładzie konwertujemy ciąg na datę typ danych (określamy go za pomocą date jako drugi argument).

SELECT CAST('20 Dec 2018' AS date) AS Result;

Wynik:

+------------+
| Result     |
|------------|
| 2018-12-20 |
+------------+

Aby uzyskać więcej przykładów, zobacz Jak przekonwertować ciąg na datę/godzinę w SQL Server przy użyciu CAST() .

Funkcja CONVERT()

Tutaj wykonujemy tę samą konwersję, co w poprzednim przykładzie, ale z CONVERT() funkcjonować. Jedyną różnicą jest tutaj składnia.

SELECT CONVERT(date, '20 Dec 2018') AS Result;

Wynik:

+------------+
| Result     |
|------------|
| 2018-12-20 |
+------------+

Aby uzyskać więcej przykładów, zobacz Jak przekonwertować ciąg na datę/godzinę w SQL Server za pomocą CONVERT() .

Funkcja PARSE()

W tym przykładzie dodaję dzień tygodnia jako część ciągu. Powodem, dla którego to robię, jest zademonstrowanie przewagi, jaką ta funkcja ma nad innymi. Jeśli podasz datę w tym formacie innym funkcjom, otrzymasz błąd. Ale PARSE() funkcja może to obsłużyć:

SELECT PARSE('Thursday, 20 Dec 2018' AS datetime2) 
AS 'Result';

Wynik:

+-----------------------------+
| Result                      |
|-----------------------------|
| 2018-12-20 00:00:00.0000000 |
+-----------------------------+

Aby uzyskać więcej przykładów, zobacz Jak przekonwertować ciąg na datę/godzinę w SQL Server przy użyciu PARSE() .

Funkcja TRY_CAST()

Możesz użyć TRY_CAST() zamiast CAST() aby zapewnić płynniejszy sposób obsługi błędów. Podczas korzystania z CAST() funkcja, jeśli rzutowanie się nie powiedzie, zwraca błąd. Jeśli jednak użyjesz TRY_CAST() zamiast tego zwraca NULL w takich przypadkach.

Oto przykład niepowodzenia rzutowania:

SELECT TRY_CAST('Next month' AS date) AS Result;

Wynik:

+----------+
| Result   |
|----------|
| NULL     |
+----------+

Jeśli podamy tę samą wartość do CAST() zamiast tego, oto co się dzieje:

SELECT CAST('Next month' AS date) AS Result;

Wynik:

Conversion failed when converting date and/or time from character string.

Więcej przykładów znajdziesz w CAST vs TRY_CAST w SQL Server:jaka jest różnica?

Funkcja TRY_CONVERT()

Możesz także użyć TRY_CONVERT() zamiast CONVERT() dla lepszej obsługi błędów. Jeśli CONVERT() funkcja nie powiedzie się, zwraca błąd. Ale jeśli TRY_CONVERT() nie powiedzie się, zwraca NULL .

Oto przykład nieudanej konwersji:

SELECT TRY_CONVERT(date, 'Next month') AS Result;

Wynik:

+----------+
| Result   |
|----------|
| NULL     |
+----------+

Jeśli podamy tę samą wartość do CONVERT() zamiast tego, oto co się dzieje:

SELECT CONVERT(date, 'Next month') AS Result;

Wynik:

Conversion failed when converting date and/or time from character string.

Więcej przykładów znajdziesz w CONVERT kontra TRY_CONVERT w SQL Server:jaka jest różnica?

Funkcja TRY_PARSE()

Możesz także użyć TRY_PARSE() zamiast PARSE() dla lepszej obsługi błędów. Jeśli PARSE() funkcja nie powiedzie się, zwraca błąd. Ale jeśli TRY_PARSE() nie powiedzie się, zwraca NULL .

Oto przykład nieudanej konwersji:

SELECT TRY_PARSE('Next month' AS date) AS Result;

Wynik:

+----------+
| Result   |
|----------|
| NULL     |
+----------+

Jeśli dostarczymy tę samą wartość do PARSE() zamiast tego, oto co się dzieje:

SELECT PARSE('Next month' AS date) AS Result;

Wynik:

Error converting string value 'Next month' into data type date using culture ''.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. błąd podczas wstawiania do tabeli mający zamiast wyzwalacza ze struktury danych encji

  2. Utwórz wyzwalacz DML w SQL Server

  3. Jak naprawić „Powiązana funkcja partycji generuje więcej partycji niż jest grup plików wymienionych w schemacie” Msg 7707 w SQL Server

  4. Dlaczego wykonywanie procedur składowanych jest szybsze niż zapytanie SQL ze skryptu?

  5. Importuj plik CSV do SQL Server