2017-12-01 1 views
-1

Hallo habe ich eine Spalte the_date die Datenprobe wie 1900-01-01 00:00:00.000 1990-01-01 00:00:00.000 1990-01-02 00:00:00.000 1990-01-03 00:00:00.000 1990-01-04 00:00:00.000 1990-01-05 00:00:00.000 1990-01-06 00:00:00.000 1990-01-07 00:00:00.000wie Datum Zeitspalte haben, umgewandelt in Datum und Anzeigen als 103 Stil

jetzt nur nur Datum wird mit Ich möchte nur auswählen und in 103 Anzeigen Stil und konvertieren Sie die Spalte in Datumsformat. Ich habe diese Syntax convert(varchar,THE_DATE , 103) versucht, aber dann ist die Spalte nicht im Datumsformat. jede Hilfe bitte. Dies funktioniert

+2

Formatierung nicht in der Datenbank durchgeführt, wird es in dem vorderen Ende getan. Der Datums-Datentyp ist nicht in einem bestimmten Format gespeichert. Es wird als Nummer in der Datenbank gespeichert. –

+0

Entschuldigung, vielleicht habe ich mich nicht klar ausgedrückt, ich würde die Spalte in Datum und das Ergebnis in 103 Stil konvertieren möchten. – deep

Antwort

1

es noch einmal versuchen

SELECT CONVERT(varchar,CAST(DATE_TIME AS DATE),103)AS Date_Time From <yourTable> 
0

eine Zeichenfolge (oder ein entsprechender Datenbanktyp) in einem anderen Typ umwandeln wird „Parsen“ genannt. Das Konvertieren eines anderen Typs in einen String wird "Formatierung" genannt.

Der DATE oder DATETIME Typ (oder ein gleichwertiger Typ in dem Front-End) speichert keine Datumsangaben als Zeichenfolge und hat daher kein Format. Eine Zahl wird verwendet, um das Datum intern darzustellen, das die Tage seit einem Referenzdatum (1753-01-01 für SQL-Server) zählt. Die Zeit wird als Dezimalbruch dargestellt. Natürlich sehen Sie das Datum immer als formatiert, wenn Sie die Tabelle öffnen, da es in einen Text für die Anzeige konvertiert wird, aber nicht als formatiert gespeichert wird.

Also, was Sie tun müssen, wenn Ihr Datum als Text angegeben ist, ist es im Format 121 (JJJJ-MM-TT HH: MI: SS.MMM (24h)) zu analysieren, um eine DATE (oder DATETIME).

CONVERT(DATE, the_date, 121)  or  CONVERT(DATETIME, the_date, 121) 

Wenn the_date ist bereits von DATE (oder DATETIME) eingeben und Sie möchten, um sie anzuzeigen im 103-Format (TT/MM/YYYY)

CONVERT(VARCHAR(10), the_date, 103) 

Wenn das Datum angegeben als DATETIME Typ und Sie möchten nur die Zeit Teil abziehen und das Ergebnis als DATETIME wieder eingeben, können Sie

tun 210

Beachten Sie, dass hier kein Datumsformat verwendet wird, da das Datum niemals als Text angezeigt wird.

+0

HI, yeah meine Spalte ist im Datetime-Format und ich habe diese DATEADD (dd, DATEDIFF (dd, 0, the_date), 0) nur um Zeit Teil abzustreifen, aber es funktioniert nicht. es gibt mir immer noch das Ergebnis mit Zeitanteil. – deep

+0

Sie müssen den Unterschied zwischen dem Ändern des Datetime-Werts und dem Formatieren des Datetime-Werts für die Anzeige festlegen. Zur Anzeige ändern Sie den datetime-Wert in der db nicht, sondern wandeln Sie ihn in einen Text um, indem Sie ihn entsprechend formatieren, d. H. Nur vorübergehend. Die Anzeige hat immer ein Textformat. Siehe: https://docs.microsoft.com/en-us/sql/t-sql/functions/cast-and-convert-transact-sql. Und normalerweise geschieht die Formatierung im Frontend (der Anwendung), nicht im Backend (db, sql). –

0

Es ist ein wenig verwirrend, denn unabhängig vom Datentyp erhalten Sie immer die gleiche Antwort mit CONVERT. Ich werde dies veranschaulichen mit 2 deklarierten Variablen, 1 Datetime-Datentyp, der andere Datum Datentyp:

DECLARE @mydatetime datetime = '1990-01-01 00:00:00.000' 
DECLARE @mydate date = '1900-01-01' 

SELECT convert(varchar,@mydatetime, 103) as mydatetime 
SELECT convert(varchar,@mydate, 103) as mydate 

Produziert:

mydatetime 
01/01/1990 

mydate 
01/01/1900 

Sie müssen also nicht auf dem neuesten Stand werfen, dann auf 103-Format .

Wenn Sie nicht die Zeit mit Datum in Ihrer Tabelle (Datetime) mögen, dann können Sie immer die Spalte in der Tabelle zu dem Datentyp date ändern. Dies kann mit SSMS erfolgen oder Sie können die SQL tun:

ALTER TABLE mytable ALTER COLUMN mycolumn DATE 

Wo DATE den neuen Datentyp ist. Und dann wird nur das Datum in der Tabelle gespeichert.

0

Dank für Ihre Antwort, aber für alle, die meine gleiche Abfrage hat ich habe die Lösung von hier solution

Verwandte Themen