J'utilise SQL Server 2014 et je travaille avec une colonne de l'un de mes tableaux, qui répertorie les dates d'arrivée.
C'est dans le format suivant:
ArrivalDate
2015-10-17 00:00:00.000
2015-12-03 00:00:00.000
J'écris une requête qui extrait les données de la table ci-dessus, y compris la colonne ArrivalDate. Cependant, je devrai convertir les dates pour qu'elles deviennent le premier jour de leurs mois respectifs.
En d'autres termes, ma requête doit générer l'exemple ci-dessus comme suit:
2015-10-01 00:00:00.000
2015-12-01 00:00:00.000
J'ai besoin de cela pour pouvoir créer une relation avec ma table de dates dans mon modèle PowerPivot.
J'ai essayé cette syntaxe mais elle ne répond pas à mes exigences:
CONVERT(CHAR(4),[ArrivalDate], 100) + CONVERT(CHAR(4), [ArrivalDate], 120) AS [MTH2]
Si, par exemple, le 15 du mois donné, vous soustrayez 14:
SELECT
ArrivalDate,
DATEADD(DAY, -DATEPART(DAY, ArrivalDate) + 1, ArrivalDate) AS FirstDay
FROM [Your Table]
Pour éliminer la partie temps, vous pouvez utiliser CAST(... AS DATE)
.
À partir de SQL Server 2012, vous pouvez également utiliser DATEFROMPARTS
:
SELECT DATEFROMPARTS(YEAR(ArrivalDate), MONTH(ArrivalDate), 1)
FROM my_table
Date de la ronde au premier du mois:
DATEADD(MONTH, DATEDIFF(MONTH, 0, DateColumn), 0)
Ou utilisez simplement la fonction ROUND -
SELECT ROUND (TO_DATE ('27 -OCT-00 '),' YEAR ') "Nouvel An" DE DUAL;
01-JAN-01