Il modo più semplice per creare una data che è il primo giorno del mese, data un'altra data
-
02-07-2019 - |
Domanda
In SQL Server qual è il modo più semplice / pulito per creare un datetime che rappresenti il ??primo del mese basato su un altro datetime? ad es. ho una variabile o una colonna con 3-Mar-2005 14:23 e voglio ottenere 1-Mar-2005 00:00 (come datetime, non come varchar)
Soluzione
Select DateAdd(Month, DateDiff(Month, 0, GetDate()), 0)
Per eseguirlo su una colonna, sostituisci GetDate () con il nome della tua colonna.
Il trucco di questo codice è con DateDiff. DateDiff restituisce un numero intero. Il secondo parametro (lo 0) rappresenta la data 0 in SQL Server, ovvero il 1 ° gennaio 1900. Pertanto, la datiff calcola il numero intero di mesi dal 1 ° gennaio 1900, quindi aggiunge tale numero di mesi al 1 ° gennaio 1900. L'effetto netto è la rimozione della parte del giorno (e dell'ora) di un valore datetime.
Altri suggerimenti
SELECT DATEADD(mm, DATEDIFF(mm, 0, @date), 0)
Qualcosa del genere funzionerebbe ....
UPDATE YOUR_TABLE
SET NewColumn = DATEADD(day, (DATEPART(day, OldColumn) -1)*-1, OldColumn)
Usa solo
DATEADD(DAY, 1-DAY(@date), @date)