maneira mais simples de criar uma data que é o primeiro dia do mês, dada outra data
-
02-07-2019 - |
Pergunta
No SQL Server que é a maneira mais simples / mais limpa para fazer um datetime que representa o primeiro dia do mês com base em outra data e hora? por exemplo, eu tenho uma variável ou coluna com 3-Mar-2005 14:23 e quero obter 1-Mar-2005 00:00 (como data e hora, e não como varchar)
Solução
Select DateAdd(Month, DateDiff(Month, 0, GetDate()), 0)
Para executar isso em uma coluna, substitua GetDate () com o nome da coluna.
O truque para este código é com DateDiff. DifData retorna um número inteiro. O segundo parâmetro (o 0) representa a data 0 no SQL Server, que é 01 de janeiro de 1900. Assim, o datediff calcula o número inteiro de meses desde 01 de janeiro de 1900, em seguida, acrescenta que o número de meses para 01 de janeiro de 1900. o efeito líquido é a remoção da parte do dia (e tempo) de um valor de data e hora.
Outras dicas
SELECT DATEADD(mm, DATEDIFF(mm, 0, @date), 0)
Algo como isso iria funcionar ....
UPDATE YOUR_TABLE
SET NewColumn = DATEADD(day, (DATEPART(day, OldColumn) -1)*-1, OldColumn)
Apenas uso
DATEADD(DAY, 1-DAY(@date), @date)