Tenho no meu db uma data futura (datetime), 2009-10-09 00:00:00 por exemplo.
Como faço pra calcular a diferença de dias entre hoje (NOW()) e esta data?
tentei usar timestamp unix mas esse cocô zera em 1900 às 21 horas...
dá uma luz aew por favor

Posted 09/03/2006, 11:43
Posted 09/03/2006, 11:53
CAST(((UNIX_TIMESTAMP(data) - UNIX_TIMESTAMP(NOW())) / 84600) AS SIGNED)
DATEDIFF() retorna o número de dias entre a data inicial expr e a data final expr2. expr e expr2 são expressões de datas ou data e hora. Apenas a parte da data dos valores sã usados no cálculo
Posted 09/03/2006, 14:48
$DataBase->DoQuery("SELECT Oss.Id , Oss.AnexCliente , Oss.AnexRespAgencia , Oss.DataIn , Oss.DataOut , Oss.Servico , MAX(Estagio.Id) As EstagioID , Estagio.Nome AS EstagioNome , Cliente.Id AS ClienteID , Cliente.Empresa AS ClienteEmpresa , Respons.Id AS ResponsID , Respons.Apelido AS ResponsApelido , ResEsta.Id AS ResEstaID , ResEsta.Apelido AS ResEstaApelido FROM OS_oss AS Oss , OS_estagios AS Estagio , usuarios AS Cliente , usuarios AS Respons , usuarios AS ResEsta WHERE Oss.AnexCliente = Cliente.Id AND Oss.AnexRespAgencia = Respons.Id AND Estagio.AnexOss = Oss.Id AND Estagio.AnexUsuario = ResEsta.Id GROUP BY Oss.Id");
Posted 09/03/2006, 23:15
nossa, chega to com vergonha de perguntar uma coisa que deve ser tão fácil...
DATE_DIFF(Oss.DataOut, NOW()) AS data_diff, CEILING(((HOUR(Oss.DataOut) * 3600) - (HOUR(NOW()) * 3600)) / 3600) AS hora_diff
Posted 14/03/2006, 15:35
SELECT Oss.Id , Oss.AnexCliente , Oss.AnexRespAgencia , Oss.DataIn , Oss.DataOut , Oss.Servico , DATEDIFF(Oss.DataOut, NOW()) AS data_diff, CEILING(((HOUR(Oss.DataOut) * 3600) - (HOUR(NOW()) * 3600)) / 3600) AS hora_diff, MAX(Estagio.Id) As EstagioId , Estagio.Nome AS EstagioNome , Cliente.Id AS ClienteID , Cliente.Empresa AS ClienteEmpresa , Respons.Id AS ResponsID , Respons.Apelido AS ResponsApelido , ResEsta.Id AS ResEstaID , ResEsta.Apelido AS ResEstaApelido FROM OS_oss AS Oss , OS_estagios AS Estagio , usuarios AS Cliente , usuarios AS Respons , usuarios AS ResEsta WHERE Oss.AnexCliente = Cliente.Id AND Oss.AnexRespAgencia = Respons.Id AND Estagio.AnexOss = Oss.Id AND Estagio.AnexUsuario = ResEsta.Id AND Estagio.Nome <> 'FINALIZADO' GROUP BY Oss.Id
MAX(Estagio.Id) As EstagioId , Estagio.Nome AS EstagioNome ,
Posted 14/03/2006, 17:15
como seria esta contagem regressiva!!??olha so...
minha query ficou assim:SELECT Oss.Id , Oss.AnexCliente , Oss.AnexRespAgencia , Oss.DataIn , Oss.DataOut , Oss.Servico , DATEDIFF(Oss.DataOut, NOW()) AS data_diff, CEILING(((HOUR(Oss.DataOut) * 3600) - (HOUR(NOW()) * 3600)) / 3600) AS hora_diff, MAX(Estagio.Id) As EstagioId , Estagio.Nome AS EstagioNome , Cliente.Id AS ClienteID , Cliente.Empresa AS ClienteEmpresa , Respons.Id AS ResponsID , Respons.Apelido AS ResponsApelido , ResEsta.Id AS ResEstaID , ResEsta.Apelido AS ResEstaApelido FROM OS_oss AS Oss , OS_estagios AS Estagio , usuarios AS Cliente , usuarios AS Respons , usuarios AS ResEsta WHERE Oss.AnexCliente = Cliente.Id AND Oss.AnexRespAgencia = Respons.Id AND Estagio.AnexOss = Oss.Id AND Estagio.AnexUsuario = ResEsta.Id AND Estagio.Nome <> 'FINALIZADO' GROUP BY Oss.Id
mas ainda tenho uma duvida nesta parte:MAX(Estagio.Id) As EstagioId , Estagio.Nome AS EstagioNome ,
Eu "pego" o maior id do estágio. OK.
Mas não vem o "nome" vinculado a este id. por exemplo, eu pego os campos 3 | blabla, mas 'blabla' está na linha do id 1, não do id 3.
deu pra entender?
Posted 14/03/2006, 17:28
FROM
OS_oss AS Oss ,
OS_estagios AS Estagio ,
OS_estagios AS Estagio2 ,
usuarios AS Cliente ,
usuarios AS Respons ,
usuarios AS ResEsta
WHERE
Oss.AnexCliente = Cliente.Id AND
Oss.AnexRespAgencia = Respons.Id AND
Estagio.AnexOss = Oss.Id AND
Estagio.AnexUsuario = ResEsta.Id AND
Estagio.Nome <> 'FINALIZADO' AND
Estagio2.id = MAX(Estagio2.id)
Estagio2.nome AS EstagioNome
0 membro(s), 1 visitante(s) e 0 membros anônimo(s)