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)

Foi útil?

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)
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top