A table
Tarefa tem colunas como:
Task(TaskID, TaskName, CreatedDate)
E deseja executar o bloco de código com base na diferença de data e hora como:
SE a data de criação da tarefa passou 15 minutos ENTÃO
Execute o bloco #01
ELSE IF Task CreatedDate ainda não passou de 15 minutos ENTÃO
Execute o bloco #02
Eu testei abaixo da consulta, mas dá resultado como61633440
SELECT DATEDIFF(MINUTE, CONVERT(VARCHAR(10), CreatedDate, 108), CURRENT_TIMESTAMP) AS MinuteDiff
Como poderíamos alcançar acima em sql?
CURRENT_TIMESTAMP retorna a data e hora atual algo como
2017-03-09 15:19:53.770
.CONVERT(VARCHAR(10), CreatedDate, 108)
retorna uma string com apenas tempo15:19:53
.O segundo parâmetro de DATEDIFF recebe um datetime para que sua string seja convertida implicitamente em um datetime. Na falta de algo melhor para usar uma data o SQL Server usa
1900-01-01
então seu segundo parâmetro acaba sendo1900-01-01 15:19:53.000
e a função retorna o número de minutos desde o início do século anterior.Remova a conversão no segundo parâmetro e deve funcionar bem para você.
Aqui está o código sql para calcular o número de minutos, segundos, horas que se passaram desde o CreatedDate:
A execução de dois blocos de código diferentes provavelmente exigirá que você faça o processamento de registro por registro, o que consome tempo e recursos caros.
Se você estivesse apenas desejando relatar ou manipular os dados, você poderia escrever duas consultas.
Diferença entre dois datetime para obter o resultado em horas:minutos:segundo formato
Responda
06:45:55