sql-server - datumsformat - ms sql datum formatieren



Wie erhalte ich ein Datum im YYYY-MM-DD Format von einem TSQL Datetime Feld? (14)

Beginnend mit SQL Server 2012 (ursprüngliche Frage ist für 2000):

SELECT FORMAT(GetDate(), 'yyyy-MM-dd')

Wie kann ich ein Datum von SQL Server im Format JJJJ-MM-TT abrufen? Ich brauche das, um mit SQL Server 2000 und aufwärts zu arbeiten. Gibt es eine einfache Möglichkeit, dies in SQL Server durchzuführen, oder wäre es einfacher, es programmatisch zu konvertieren, nachdem ich die Ergebnismenge abgerufen habe?

Ich habe die CAST und CONVERT auf Microsoft Technet gelesen, aber das Format, das ich will, ist nicht aufgeführt und eine Änderung des Datumsformats ist keine Option.



Die Verwendung einer CASE-Anweisung für jede Convert / Cast-Funktion funktioniert immer für mich:

Bitte ersetzen Sie tableXXXXY durch Ihren Tabellennamen und geben Sie Date_dat mit dem Namen Ihres Datetime-Feldes in dieser Tabelle aus:

SELECT  issueDate_dat, CONVERT(varchar, DATEPART(yyyy, issuedate_dat))  AS issueDateYYYY
, CASE WHEN (len(CONVERT(varchar, DATEPART(mm, issuedate_dat))) < 2) THEN '0' +CONVERT(varchar, DATEPART(mm, issuedate_dat)) ELSE CONVERT(varchar, DATEPART(mm, issuedate_dat)) END AS  issueDateMM
, CASE WHEN (len(CONVERT(varchar, DATEPART(dd, issuedate_dat))) <2) THEN '0' +CONVERT(varchar, DATEPART(dd, issuedate_dat)) ELSE CONVERT(varchar, DATEPART(dd, issuedate_dat)) END AS issueDateDD
FROM            tableXXXXY

Ich hoffe, das war hilfreich. Chagbert.


Diese Lösung funktioniert für mich, einfach und effektiv (auch mit 126)

CONVERT(NVARCHAR(MAX), CAST(GETDATE() as date), 120)

Für YYYYMMDD versuchen

select convert(varchar,getDate(),112)

Ich habe nur auf SQLServer2008 getestet.


Für den Fall, dass jemand es anders herum machen möchte und dies findet.

select convert(datetime, '12.09.2014', 104)

Dies konvertiert eine Zeichenfolge im deutschen Datumsformat in ein Datetime-Objekt.

Warum 104? Siehe hier: ISO8601


Ich würde ... benutzen:

CONVERT(char(10),GETDATE(),126)

Verwende in deinem Cast- und Convert-Link Style 126 also:

CONVERT (varchar(10), DTvalue, 126)

Dies verkürzt die Zeit. Ihre Anforderung in JJJJ-MM-TT bedeutet, dass es sich um einen String-Datentyp und um datetime handeln muss.

Ehrlich gesagt, würde ich es auf dem Client tun, es sei denn, Sie haben gute Gründe, dies nicht zu tun.


Wenn Sie es später wieder als Datum anstelle von varchar , vergessen Sie nicht, es zurück zu konvertieren:

select convert(datetime,CONVERT(char(10), GetDate(),126))

Wenn das Format des Quelldatums durcheinander ist, versuchen Sie Folgendes:

select
convert(nvarchar(50),year(a.messedupDate))+'-'+
(case when len(convert(nvarchar(50),month(a.messedupDate)))=1 
    then '0'+ convert(nvarchar(50),month(a.messedupDate))+'-' 
    else convert(nvarchar(50),month(a.messedupDate)) end)+
(case when len(convert(nvarchar(50),day(a.messedupDate)))=1 
    then '0'+ convert(nvarchar(50),day(a.messedupDate))+'-'
    else convert(nvarchar(50),day(a.messedupDate)) end) 
from messytable a

 IFormatProvider culture = new System.Globalization.CultureInfo("fr-FR", true);

cmdGetPaymentStatement.Parameters.AddWithValue("@pStartDate", DateTime.Parse("22/12/2017", culture, System.Globalization.DateTimeStyles.AssumeLocal)).IsNullable = true;

SELECT CONVERT(char(10), GetDate(),126)

Begrenze die Größe der Varchar-Chops des Stundenabschnitts, die du nicht willst.


SELECT convert(varchar, getdate(), 100) -- mon dd yyyy hh:mmAM

SELECT convert(varchar, getdate(), 101) -- mm/dd/yyyy – 10/02/2008                  

SELECT convert(varchar, getdate(), 102) -- yyyy.mm.dd – 2008.10.02           

SELECT convert(varchar, getdate(), 103) -- dd/mm/yyyy

SELECT convert(varchar, getdate(), 104) -- dd.mm.yyyy

SELECT convert(varchar, getdate(), 105) -- dd-mm-yyyy

SELECT convert(varchar, getdate(), 106) -- dd mon yyyy

SELECT convert(varchar, getdate(), 107) -- mon dd, yyyy

SELECT convert(varchar, getdate(), 108) -- hh:mm:ss

SELECT convert(varchar, getdate(), 109) -- mon dd yyyy hh:mm:ss:mmmAM (or PM)

SELECT convert(varchar, getdate(), 110) -- mm-dd-yyyy

SELECT convert(varchar, getdate(), 111) -- yyyy/mm/dd

SELECT convert(varchar, getdate(), 112) -- yyyymmdd

SELECT convert(varchar, getdate(), 113) -- dd mon yyyy hh:mm:ss:mmm

SELECT convert(varchar, getdate(), 114) -- hh:mm:ss:mmm(24h)

SELECT convert(varchar, getdate(), 120) -- yyyy-mm-dd hh:mm:ss(24h)

SELECT convert(varchar, getdate(), 121) -- yyyy-mm-dd hh:mm:ss.mmm

SELECT convert(varchar, getdate(), 126) -- yyyy-mm-ddThh:mm:ss.mmm

replace(convert(varchar, getdate(), 111), '/','-')

Mach auch Trick ohne "etwas abzuhacken".





tsql