Jak przekonwertować string do daty T-SQL?
Jak mogę przekonwertować Łańcuch znaków na datę w T-SQL?
Moim przypadkiem testowym jest ciąg znaków: '24.04.2012'
6 answers
CONVERT(datetime, '24.04.2012', 104)
Powinno wystarczyć. Zobacz tutaj, aby uzyskać więcej informacji: " CAST and CONVERT (Transact-SQL)"Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-14 11:30:24
CONVERT(DateTime, DateField, 104)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-04-24 19:26:12
Oto rozwiązanie, które działa dobrze. Podstawowe polecenie Zawiera in-line try-parse:
SELECT TRY_PARSE('02/04/2016 10:52:00' AS datetime USING 'en-US') AS Result;
Oto co zaimplementowaliśmy w wersji produkcyjnej:
UPDATE dbo.StagingInputReview
SET ReviewedOn =
ISNULL(TRY_PARSE(RTrim(LTrim(ReviewedOnText)) AS datetime USING 'en-US'), getdate()),
ModifiedOn = (getdate()), ModifiedBy = (suser_sname())
-- Check for empty/null/'NULL' text
WHERE not ReviewedOnText is null
AND RTrim(LTrim(ReviewedOnText))<>''
AND Replace(RTrim(LTrim(ReviewedOnText)),'''','') <> 'NULL';
Kolumny ModifiedOn i ModifiedBy służą tylko do śledzenia wewnętrznej bazy danych.
Zobacz także te odwołania do Microsoft MSDN:
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-10 15:18:21
Chociaż konwerter działa, nie powinieneś go używać. Powinieneś zadać sobie pytanie, dlaczego parsujesz wartości łańcuchowe w SQL-Server. Jeśli jest to zadanie jednorazowe, w którym ręcznie naprawiasz niektóre dane, nie otrzymasz tych danych innym razem, jest to w porządku, ale jeśli jakakolwiek aplikacja używa tego, powinieneś coś zmienić. Najlepszym sposobem byłoby użycie typu danych "date". Jeśli jest to wejście użytkownika, jest jeszcze gorzej. Następnie należy najpierw sprawdzić w kliencie. Jeśli naprawdę chcesz zdać wartości łańcuchowe, gdzie SQL-Server oczekuje daty, zawsze można użyć formatu ISO ('YYYYMMDD') i powinien on konwertować się automatycznie.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-09-19 17:18:03
Możesz użyć:
SELECT CONVERT(datetime, '24.04.2012', 103) AS Date
Odniesienie: CAST and CONVERT (Transact-SQL)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-05-08 01:36:56
CONVERT(DateTime, ExpireDate, 121) AS ExpireDate
Zrobi to, co jest potrzebne, wynik:
2012-04-24 00:00:00.000
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-30 03:53:23