Il modo più semplice per creare una data che è il primo giorno del mese, data un'altra data

StackOverflow https://stackoverflow.com/questions/121581

  •  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)

È stato utile?

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)
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top