Tenho uma dúvida em relação ao uso de uma DATEADD()
função para uma coluna identificada comoCHAR (6)
A time_stamp
coluna contém valores 131329
como hhmmss
. Sempre que tento criar uma nova coluna que manterá o valor da time_stamp
coluna + 5 minutos, recebo um erro.
Msg 242, Nível 16, Estado 3, Linha 1
A conversão de um tipo de dados char em um tipo de dados datetime resultou em um valor datetime fora do intervalo.`
O que estou tentando fazer é criar uma nova coluna 5 minutos à frente do arquivo time_stamp
. Estou trabalhando em um relatório agora que mostra 'pedidos concluídos', mas preciso que o relatório mantenha o pedido como NÃO CONCLUÍDO por pelo menos 5 minutos antes de aparecer no relatório como Concluído.
Bem, primeiro, você deve corrigir sua tabela e armazenar dados de data/hora usando o tipo certo de coluna, e não dividi-la por motivos desconhecidos. De quem foi a decisão de armazenar um horário como
CHAR(6)
? Você consegue pensar em uma única boa razão para isso? Onde você armazena a data? Isso foi às 13h de hoje, na última terça-feira ou em algum momento de outubro de 2012? Isso realmente deve ser uma única coluna de data e hora. Faça com que os "designers" leiam isso e isso .Mas tirando isso (engraçado como toda vez que você sugere uma mudança de mesa, eles dizem que não podem mudar a mesa):
Resultado:
Se você acha essa consulta feia e tediosa, ótimo! Há uma boa razão: você está armazenando seus dados de forma errada .
E este também não será o último problema que você terá com este design. O que está impedindo alguém de inserir
967286
oufoobar
ou<empty string>
em suaCHAR(6)
coluna? Se precisar contornar esse problema, você pode usarTRY_CONVERT()
a partir de 2012 (sempre especifique a versão com uma tag específica da versão) ou umaCASE
expressão em versões anteriores.