it-swarm.com.de

Rundungsdaten bis zum ersten Tag des Monats

Ich verwende SQL Server 2014 und arbeite mit einer Spalte aus einer meiner Tabellen, in der die Ankunftsdaten aufgeführt sind.

Es hat das folgende Format:

ArrivalDate
2015-10-17 00:00:00.000
2015-12-03 00:00:00.000

Ich schreibe eine Abfrage, die Daten aus der obigen Tabelle abruft, einschließlich der ArrivalDate-Spalte. Ich muss jedoch die Datumsangaben so konvertieren, dass sie der erste Tag der jeweiligen Monate sind.

Mit anderen Worten, meine Abfrage sollte das obige Beispiel folgendermaßen ausgeben:

2015-10-01 00:00:00.000
2015-12-01 00:00:00.000

Ich brauche dies, um eine Beziehung zu meiner Datumstabelle in meinem PowerPivot-Modell herzustellen.

Ich habe diese Syntax ausprobiert, aber sie erfüllt meine Anforderungen nicht:

CONVERT(CHAR(4),[ArrivalDate], 100) + CONVERT(CHAR(4), [ArrivalDate], 120) AS [MTH2]
9
user3115933

Wenn es beispielsweise der 15. eines bestimmten Monats ist, ziehen Sie 14 ab:

SELECT 
    ArrivalDate, 
    DATEADD(DAY, -DATEPART(DAY, ArrivalDate) + 1, ArrivalDate) AS FirstDay
FROM [Your Table]

Um den Zeitanteil zu eliminieren, können Sie CAST(... AS DATE) verwenden.

10
Salman A

Verwenden Sie FORMATNAME _, um Ihr Datum zu formatieren.

DECLARE @date DATETIME = '2015-10-17 00:00:00.000'

SELECT FORMAT(@date, 'yyyy-MM-01 HH:mm:ss.fff')

Oder wenn Sie keinen Zeitanteil möchten:

SELECT FORMAT(@date, 'yyyy-MM-01 00:00:00.000')

LiveDemoNAME_

7
Lukasz Szozda

Ab SQL Server 2012 können Sie auch DATEFROMPARTS verwenden:

SELECT DATEFROMPARTS(YEAR(ArrivalDate), MONTH(ArrivalDate), 1)
FROM   my_table
3
Code Different

Runden Datum bis zum Ersten des Monats:

DATEADD(MONTH, DATEDIFF(MONTH, 0, DateColumn), 0)
1
Metaphor

Oder nutzen Sie einfach die ROUND-Funktion - 

SELECT ROUND (TO_DATE ('27 -OCT-00 '),' YEAR ') "Neues Jahr" FROM DUAL;

Neujahr

01. Januar-01

0
Ryan Kramer