La forma más sencilla de crear una fecha que sea el primer día del mes, dada otra fecha

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

  •  02-07-2019
  •  | 
  •  

Pregunta

En SQL Server, ¿cuál es la forma más sencilla/limpia de hacer una fecha y hora que represente el primero del mes en función de otra fecha y hora?Por ejemplo, tengo una variable o columna con el 3 de marzo de 2005 a las 14:23 y quiero obtener el 1 de marzo de 2005 a las 00:00 (como fecha y hora, no como varchar).

¿Fue útil?

Solución

Select DateAdd(Month, DateDiff(Month, 0, GetDate()), 0)

Para ejecutar esto en una columna, reemplace GetDate() con el nombre de su columna.

El truco de este código está en DateDiff.DateDiff devuelve un número entero.El segundo parámetro (el 0) representa la fecha 0 en SQL Server, que es el 1 de enero de 1900.Entonces, el fechador calcula el número entero de meses desde el 1 de enero de 1900 y luego suma ese número de meses al 1 de enero de 1900.El efecto neto es eliminar la parte del día (y la hora) de un valor de fecha y hora.

Otros consejos

SELECT DATEADD(mm, DATEDIFF(mm, 0, @date), 0)

Algo como esto funcionaría....

UPDATE YOUR_TABLE
SET NewColumn = DATEADD(day, (DATEPART(day, OldColumn) -1)*-1, OldColumn)

Solo usa

DATEADD(DAY, 1-DAY(@date), @date)
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top