Ich benötige Funktionen in einem Skript, mit denen ich Datumsangaben in eine Tabelle einfügen kann.
Welche SQL brauche ich, um ein Datum des Formats einzufügen
01/08/2010 00:00:00
wobei das Datum der erste Tag des aktuellen Monats ist. Was muss ich ändern, um den Monatswert angeben zu können? Vielen Dank
Der beste und einfachste Weg, dies zu tun, ist zu verwenden:
SELECT DATEADD(m, DATEDIFF(m, 0, GETDATE()), 0)
Ersetzen Sie einfach GETDATE () mit dem gewünschten Datum.
Die akzeptierte Antwort funktioniert und ist möglicherweise schneller, aber SQL 2012 und höher haben eine einfachere Methode:
SELECT cast(format(GETDATE(), 'yyyy-MM-01') as Date)
select cast(cast(datepart(year,getdate()) as char(4))
+ '/'
+ cast(datepart(month,getdate()) as char(2))
+ '/01' as datetime)
Hier ist eine sehr einfache Möglichkeit, dies zu tun (mit SQL 2012 oder höher).
datefromparts(year(getdate()),month(getdate()),1)
sie können auch einfach den letzten Tag des Monats verwenden
eomonth(getdate())
SELECT DATEADD (Tag, 1-DATEpart (Tag, GETDATE ()), GETDATE ())
SELECT DATEADD(m, DATEDIFF(m, 0, GETDATE()), 0)
Das hat perfekt funktioniert. Ich habe tatsächlich eine Case-Anweisung hinzugefügt. Danke für den Beitrag:
SELECT Case(DATEADD(m, DATEDIFF(m, 0, GETDATE()), 0) as Date)
ich denke normalerweise konvertiert String in MM/DD/YY HH: mm: ss
Entschuldigen Sie, dass Sie die Frage falsch verstanden haben, um zu sehen, ob Sie die Reihenfolge der Zeichenfolgen ändern können.
Dies kann sein, was Sie wollen:
declare @test as date
select @test = CONVERT(date, '01/08/2010 00:00:00', 103)
select convert(varchar(15), @test, 106)
Modifiziert von diesem link . Dies wird als Zeichenfolge zurückgegeben. Sie können jedoch nach Bedarf ändern, um Ihren Datetime-Datentyp zurückzugeben.
SELECT CONVERT(VARCHAR(25),DATEADD(dd,-(DAY(GetDate())-1),GetDate()),101)
SELECT CAST(FLOOR(CAST(DATEADD(d, 1 - DAY(GETDATE()), GETDATE()) AS FLOAT)) AS DATETIME)