2017-11-06 1 views
0

Ich versuche, eine Datetime mit Zeitzone zu werfen, ist das ursprüngliche Datum wie: 2015.07.06 08.35.02 PDTWie Datum mit Zeitzone in Datetime SQL Server werfen

So ich mag den MAX Datum der Säule (UserAddDate) haben,

ich diese Formel in SQL Server bin mit:

MAX (CAST (LEFT (SIG.UserAddDate, 10) AS nvarchar))

und es funktioniert, ich habe das: 18.02.2016, aber ich will nicht Um dies in nvarchar umzuwandeln, möchte ich es in DATETIME umwandeln, Und wenn ich versuche, es zu werfen, habe ich diesen Fehler: Konvertierung fehlgeschlagen, wenn Datum und/oder Zeit von Zeichenkette konvertiert werden.

Wer weiß warum? , Vielen Dank.

+1

Hat Sie SQL Server-Version unterstützt Standard-SQL des 'CAST (MAX (SIG.UserAddDate) AS DATE)'? – dnoeth

+0

Der Server interpretiert möglicherweise Ihr Datum als "Tag 2 von Monat 18" oder "Tag 18 von Monat 2". Und seit Monat 18 ungültig ist, bekommst du einen Fehler. Die ideale Situation besteht darin, sich niemals mit "Datumszeichenfolgen" in der Datenbank zu befassen. – kirchner

Antwort

0

Sie können einfach CAST verwenden. Dies sollte mit AM, PM kompatibel sein:

CREATE TABLE #SIG (UserAddDate varchar(100)) --temp table 
INSERT INTO #SIG VALUES ('07/06/2015 08:35:02 AM PDT') 
         ,('07/06/2015 10:35:02 AM PDT') 
         ,('07/06/2015 02:35:02 PM PDT') --hour is lesser but is PM time 

SELECT MAX(CAST(LEFT(#SIG.UserAddDate, 22) as datetime)) AS MaxDateTime 
    FROM #SIG 

--DROP TABLE #SIG 

produzieren würde:

MaxDateTime 
2015-07-06 14:35:02.000