2017-07-13 5 views
0

Ich habe ein Problem. Wenn ich führen Sie den nächsten Satz in der SQL Server 2012:Verwenden Sie TO_DATE in SQL Server 2012

TO_DATE('2011-11-09 00:00:00','YYYY-MM-DD HH24:MI:SS') 

ich auf den Fehler erhalten:

'TO_DATE' not is a name de function integrate recognized. 

Was ist die Lösung?

Danke!

+2

Mögliches Duplikat [SQL Server-String to date Konvertierung] (https://stackoverflow.com/questions/207190/ sql-server-string-to-date-conversion) –

+0

Nicht doppelt, mein Format Datum ist anders. –

+2

Fragen müssen nicht exakt Duplikate sein, solange die Antworten noch zutreffen. Wir brauchen keine Frage für jedes mögliche Format, das Leute in 'TO_DATE' verwenden könnten. –

Antwort

3

SQL-Server hat keine TO_DATE Funktion. Sie müssen convert verwenden. Siehe here

-- Specify a datetime string and its exact format 
SELECT TO_DATE('2012-06-05', 'YYYY-MM-DD') FROM dual; 


-- Specify a datetime string and style 102 (ANSI format), raises an error if conversion fails 
    SELECT CONVERT(DATETIME, '2012-06-05', 102); 

    -- TRY_CONVERT available since SQL Server 2012 (returns NULL if conversion fails) 
    SELECT TRY_CONVERT(DATETIME, '2012-06-05', 102); 

Für Ihren speziellen Fall Gebrauch:

convert(DATETIME, '2011-11-09 00:00:00') 
0

TO_DATE() ist keine gültige Funktion in SQL Server (T-SQL)

Die Alternativen davon abhängen, welche Version von SQL Server, den Sie verwenden

CAST() or CONVERT() kann in jeder Version verwendet werden. Ab SQL Server 2012 kann man oder TRY_CONVERT() verwenden. Der Vorteil der Verwendung des letzteren Paares besteht darin, dass kein Fehler auftritt, wenn die Zeichenfolgen nicht konvertiert werden können, wenn sie stattdessen null zurückgeben.

Für Datum/Uhrzeit Zeichenfolgen im Allgemeinen mit CONVERT() oder TRY_CONVERT() wird verwendet, wie Sie "style" numbers übergeben können, wo YYYY-MM-DD ist "Stil" 102 z.

SELECT TRY_CONVERT(DATE,'2017-01-21',102) 

aber es ist möglich, CAST/TRY_CAST wie in diesem Beispiel zu verwenden:

SET DATEFORMAT mdy; 
SELECT TRY_CAST('12/31/2016' AS datetime)