wake-up-neo.net

SQL SERVER DATETIME-FORMAT

Beim Studieren von SQL Server bin ich mir nicht sicher:

Ein datetime-Feld mit dem Wert: 2012-02-26 09:34:00.000

Wenn ich aus der Tabelle auswähle mit:

CAST(dob2 AS VARCHAR(12) ) AS d1

Es formatiert es als: Feb 26 2012

Was ich nicht weiß, wie oder warum SQL Server DateTime so formatiert. Wenn Sie datetime2 verwenden, tut es nicht - weiß jemand warum?

14
Ian

Das Standard-Datumsformat hängt von der Spracheinstellung für den Datenbankserver ab. Sie können auch es pro Sitzung ändern wie:

set language french
select cast(getdate() as varchar(50))
-->
févr 8 2013 9:45AM
7
Andomar

versuche dies:

select convert(varchar, dob2, 101)
select convert(varchar, dob2, 102)
select convert(varchar, dob2, 103)
select convert(varchar, dob2, 104)
select convert(varchar, dob2, 105)
select convert(varchar, dob2, 106)
select convert(varchar, dob2, 107)
select convert(varchar, dob2, 108)
select convert(varchar, dob2, 109)
select convert(varchar, dob2, 110)
select convert(varchar, dob2, 111)
select convert(varchar, dob2, 112)
select convert(varchar, dob2, 113)

verweise: http://msdn.Microsoft.com/en-us/library/ms187928.aspx

http://www.w3schools.com/sql/func_convert.asp

7
SQLGuru

Kompatibilitätsunterstützung S sagt, dass Unter Kompatibilitätsstufe 110 ist der Standardstil für CAST and CONVERT - Vorgänge für die Datentypen time und datetime2 immer 121. Wenn Ihre Abfrage auf dem alten Verhalten basiert, verwenden Sie einen Kompatibilitätsgrad von weniger als 110 oder geben Sie den 0-Stil in der betroffenen Abfrage explizit an.

Das bedeutet standardmäßigdatetime2istCAST as varcharan121 format. Für ex; col1undcol2 Formate (unten) sind gleich (außer den 0 am Ende)

SELECT CONVERT(varchar, GETDATE(), 121) col1,
       CAST(convert(datetime2,GETDATE()) as varchar) col2,
       CAST(GETDATE() as varchar) col3

SQL FIDDLE DEMO

--Results
COL1                    | COL2                          | COL3
2013-02-08 09:53:56.223 | 2013-02-08 09:53:56.2230000   | Feb 8 2013 9:53AM

Zu Ihrer Information, wenn Sie CONVERT anstelle von CAST verwenden, können Sie einen dritten Parameter verwenden, um bestimmte Formate anzugeben, die hier unter MSDN aufgeführt sind.

5
Kaf

In MS SQL Server können Sie Folgendes tun:

SET DATEFORMAT ymd
1
ch2o
case when isdate(inputdate) = 1 
then convert(datetime, cast(inputdate,datetime2), 103)
else
case when isdate(inputdate) = 0 
then convert(datetime, cast(inputdate,datetime2), 103)
0
jai

Dies ist mein Lieblingsgebrauch von 112 und 114 Select (convert (varchar, getdate (), 112) + replace (convert (varchar, getdate (), 114), ':', '')) als 'Getdate ( ) 112 + 114 oder YYYYMMDDHHMMSSMSS '

Ergebnis: Getdate () 112 + 114 oder YYYYMMDDHHMMSSMSS

20171016083349100

0
Hank Freeman