Ygornet 0 Denunciar post Postado Novembro 9, 2007 Pessoal , estou com uma duvida, preciso de ajuda: tenho o seguinte código: <? $data_inicial = mktime(13, 23, 16, 11, 09, 2007); $data_final = mktime(15, 23, 16, 11, 09, 2007); $diferenca = $data_final - $data_inicial; echo "A diferença em horas entre as duas datas é: " . gmdate("H:i:s", $diferenca); RESP: A diferença em horas entre as duas datas é: 02:00:00 Mas se eu alterar a data em um dia , me retorna a diferença só em horas, ex: <? $data_inicial = mktime(13, 23, 16, 11, 09, 2007); $data_final = mktime(15, 23, 16, 11, 10, 2007); $diferenca = $data_final - $data_inicial; echo "A diferença em horas entre as duas datas é: " . gmdate("H:i:s", $diferenca); RESP: A diferença em horas entre as duas datas é: 02:00:00 Ao invés de: RESP: A diferença em horas entre as duas datas é: 26:00:00 Alguém poderia me ajudar a colocar a diferença tb pela data? Compartilhar este post Link para o post Compartilhar em outros sites
Paulo André 0 Denunciar post Postado Novembro 9, 2007 O resultado desta subtração é em segundos. ;) Sendo assim, usar a função gmdate() não funciona. []'s Compartilhar este post Link para o post Compartilhar em outros sites
Ygornet 0 Denunciar post Postado Novembro 9, 2007 A sim , a função date tb nao funciona, você saberia me dizer entao ql a função usar? Compartilhar este post Link para o post Compartilhar em outros sites
Paulo André 0 Denunciar post Postado Novembro 9, 2007 date() e nenhuma outra semelhante funciona pois o segundo parâmetro precisa ser uma data no formato UNIX timestamp. Tendo estes segundo, você precisa fazer um cálculo que de alguma forma chegue ao número de horas. ;) Se 3600 segundos é 1 hora, o cálculo daqui pra frente é fácil. Só teria que fazer algo mais complexo caso vá retornar também em minutos e segundos. :huh: []'s :D Compartilhar este post Link para o post Compartilhar em outros sites
Ygornet 0 Denunciar post Postado Novembro 9, 2007 Bom , Frenesi , isso vai ser bastante trabalhoso , entao antes de iniciar , eu vou te passar a ideia do que eu quero fazer, pq derrepente você me exclarece uma forma mais facil de desenvolver oq eu quero. Preciso pegar uma hora que é cadastrada no BD e verificar se já se passaram 5 minutos daquela hora cadastrada no banco. Ex: No banco está: 12:00:00 vamos supor que 12:03:34 , eu de o comando para verificar se passaram os 5 min. Se sim, executa uma tarefa , se nao, executa outra. Será q tem uma forma mais facil de fazer isso , sem ter que desenvolver esse trabalhão todo? Derrepente eh coias facil e eu nao estou enxergando uma ideia mais simples. Aguardo. Compartilhar este post Link para o post Compartilhar em outros sites
Paulo André 0 Denunciar post Postado Novembro 9, 2007 Você consegue guardar neste campo um formato UNIX timestamp? :) Se conseguir você pode fazer uma consulta direto na query SQL dessa forma: SELECT * FROM tabela WHERE hora < (UNIX_TIMESTAMP() - 300) Ou seja, estou selecionando todos os registros onde o valor do campo hora é menor que a data atual menos 300 segundos (5 minutos). Com isto você chega no resultado esperado. Deu pra entender? []'s ;) Compartilhar este post Link para o post Compartilhar em outros sites
Ygornet 0 Denunciar post Postado Novembro 12, 2007 Paulo André, Nao estou conseguindo salvar a data no BD no formato UNIX TIMESTAMP. Seria até valida essa ideia , mas só consigo inserir no fomato TIMESTAMP, ou seja: yyyy/mm/dd h:i:s. Nao esta dando certo certo , eu creio que seja por que o formato esta errado. como eu insiro a data no BD no formato UNIX TIMESTAMP? Compartilhar este post Link para o post Compartilhar em outros sites
Paulo André 0 Denunciar post Postado Novembro 12, 2007 Troque o tipo deste campo de DATE para INT (10 casas basta). E ao inserir usando INSERT na query, use a função UNIX_TIMESTAMP(). []'s :D Compartilhar este post Link para o post Compartilhar em outros sites
Ygornet 0 Denunciar post Postado Novembro 12, 2007 NUM TAH DANDO Nao , parece que nao aceita essa função.. o código: <?php $var = date("dmyHis"); include "conexao.php"; $sql = "INSERT INTO tempo (hora) VALUES ('UNIX_TIMESTAMP($var)')"; $query = mysql_query($sql) or die ("Erro."); ?> Me retorna: Erro. A tabela no banco ja coloquei como INT , BIGINT (15), mas nao entra no banco, ja tentei ateh VARCHAR(20) e nada! Compartilhar este post Link para o post Compartilhar em outros sites
Paulo André 0 Denunciar post Postado Novembro 12, 2007 A forma correta seria assim: INSERT INTO tempo (hora) VALUES (UNIX_TIMESTAMP()) []'s Compartilhar este post Link para o post Compartilhar em outros sites
Ygornet 0 Denunciar post Postado Novembro 12, 2007 Beleza Paulo André , deu certinho, mas aí vem a dúvida. Eu estou verificando esses -300 segundos de acordo com a data tb? Exemplo: Se a data/hora do banco é registrada: 12/11/2007 16:00:00 e for verificada com a data/hora 12/11/2007 16:10:00, vai ser constatado que se passaram os 5 minutos. Mas e se for a seguinte situação: data/hora do banco - 12/11/2007 16:00:00 e data/hora verificada 13/11/2007 16:00:00, será que vai ser retornado que se passaram 5 minutos? ou seja , sera que vai ser constatado que se passaram 24h? ou só será verificado o horario e desconsiderado a data? Compartilhar este post Link para o post Compartilhar em outros sites
Paulo André 0 Denunciar post Postado Novembro 12, 2007 A consulta faz nada mais nada menos do que retornar todos aqueles que tem mais de 5 minutos. Tendo estes resultados, basta tratar o timestamp deste campo para que exiba o tempo. []'s Compartilhar este post Link para o post Compartilhar em outros sites
Ygornet 0 Denunciar post Postado Novembro 12, 2007 Sim, isso eu fiz , jah tratei o timestamp e me jah etorno a data formatada como eu quero , mas a duvida eh se essa função volta os qeu tenham mais de 5 minutos , só de acordo com a hora ou com a data tb? Se a data comparada for a data do dia seguinte porem com a mesma hora , sera constatado que se passaram 24h independente se retorne em horas ou em segundos.. ? A pergunta seria: Se eu registro uma data agora neste momento. amanha enste mesmo horario faço uma verificação , vai ser constatado que se passaram 5 minutos , ou seja que se passaram 24h? Compartilhar este post Link para o post Compartilhar em outros sites
Paulo André 0 Denunciar post Postado Novembro 12, 2007 De acordo com a data completa. Dia, mês, ano, hora, minuto e segundo. :D Compartilhar este post Link para o post Compartilhar em outros sites
Ygornet 0 Denunciar post Postado Novembro 12, 2007 Valeu Paulo André.. Abraço! Compartilhar este post Link para o post Compartilhar em outros sites
Ygornet 0 Denunciar post Postado Novembro 13, 2007 Paulo André, Surgiu mais uma duvida , a função UNIX_TIMESTAMP nao pode ser utilizada em comando UPDATE? Tentei aqui mas nao esta dando certo como no insert.. mysql_query("UPDATE `tabela` SET `CAMPO5` = 'UNIX_TIMESTAMP()' WHERE CAMPO4='$VAR'"); Se eu insiro qq outro numero ele aceita.. Na tabela o campo foi criado como INT. Compartilhar este post Link para o post Compartilhar em outros sites
Paulo André 0 Denunciar post Postado Novembro 13, 2007 Porque desta forma você está tentando inserir UNIX_TIMESTAMP() literalmente. Precisa estar sem os apóstrofos: UPDATE `tabela` SET `CAMPO5` = UNIX_TIMESTAMP() WHERE CAMPO4='$VAR' []'s Compartilhar este post Link para o post Compartilhar em outros sites
Ygornet 0 Denunciar post Postado Novembro 13, 2007 Valeu. tinha pesquisado e achado aqui , é isso mesmo.. Compartilhar este post Link para o post Compartilhar em outros sites