Createdate no SQL

Uma das funções que temos no Coldfusion e às vezes faz uma falta danada no SQL é o CREATEDATE(). Se você estiver usando o Coldfusion para montar a query tudo bem, mas e quando você quer criar essa data dinâmicamente linha por linha dos resultados?

Por exemplo, digamos que você tenha um campo de data e quer agrupar os dados por dia. Como provavelmente sua data também inclui hora e minutos, e talvez segundos, você nunca conseguirá agrupá-los, então você precisará criar uma data só com o dia, mês e ano.

Ai começam os problemas, o SQL não possui um CREATEDATE, você não pode usar o Coldfusion porque a criação deve ser referente a cada linha, você até poderia usar o CAST do SQL só que ai não conseguiria ordenar pela data corretamente, já que sua data viraria texto. E agora?

Simples, taca um DATEADD() lá rapá!

select dateadd(day,day(campodata) – 1,dateadd(month,month(campodata) – 1,dateadd(year,(year(campodata)- 1753),’1/1/1753′))) as data, count(*) as total from tabela group by dateadd(day,day(campodata) – 1,dateadd(month,month(campodata) – 1,dateadd(year,(year(campodata)- 1753),’1/1/1753′))) order by data

Prontinho, seu campo ‘campodata’, com horas e minutos, virou o ‘data’, apenas com dia, mês e ano, agrupado e ordenado corretamente.

Deixe um comentário