Autor | Zpráva | ||
---|---|---|---|
Rob Profil |
#1 · Zasláno: 30. 4. 2006, 19:19:07
Potřebuji porovnat datum a to tím způsobem, že jeden parametr je načtený z MySQL (vložený funkcí NOW()) a druhý jsem zkusil generovaný v php pomocí fce date() ve stejné podobě jako hází NOW(). Byl to jen pokus a ne moc překvapivě nevyšel. Takže potřebuji načíst datum a čas z MySQL a pak, pokud bude více jak minutu starší, tak něco provést, teď není důležité co. Koukal jsem se do PHP manuálu, ale nic jsem nenašel. S datem jsem ještě nikdy takhle pracovat nepotřeboval, takže fakt netuším.
|
||
Casero Profil |
#2 · Zasláno: 30. 4. 2006, 21:51:17
bohužel nepíšu radu, ale spíš před 32 dnama sem sem psal podobnej článek, potřeboval sem totež, ale z odpovědí mi to nebylo něja jasný...tak su zvědavej, snda ted něco bude...
|
||
Casero Profil |
#3 · Zasláno: 30. 4. 2006, 21:53:09
2 dny *
|
||
Rob Profil |
#4 · Zasláno: 30. 4. 2006, 22:40:20
Je to na http://diskuse.jakpsatweb.cz/index.php?action=vthread&forum=9&topic=25 129
Sice je řečeno proč to nejde, ale není řečeno, jak to vyřešit. Takže jak? Nevíte někdo? |
||
WertriK Profil * |
#5 · Zasláno: 30. 4. 2006, 22:51:38
Teoreticky :
- prepociat roky [2006 - 1970] na sekundy to by nemel byt problem - pozor na prestupne roky - prepocitat mesice na sekundy - to by taky nemel byt problem - staci zjistit zda je rok v db prestupny a podle toho se zaridit - prepocistat dny na sekundy - prepocistat hodiny a minuty na sekundy - vsechny hodnoty secist - zjistit aktualni hodnotu [fce time();] - porovnat aktualni hodnotu z hodnoutou vypocitanou |
||
koudi Profil |
#6 · Zasláno: 30. 4. 2006, 23:12:27
Rob
Pokud chceš jen zjistit, jestli je jedno datum o víc jak minutu starší než druhý, tak je jednoduše odečti (pokud je máš jako timestamp) a jestli je rozdíl více jak 60, tak je to starší než minutu :) Casero Tobě to nešlo, protože jsi to dělal kompletně blbě. |
||
Hugo Profil |
#7 · Zasláno: 30. 4. 2006, 23:22:45
Pokud chceš v MySQL převést datum na unixtimestamp, tak použij funkci unix_timestamp, pokud chceš opačný převod, tak funkci from_unixtime.
|
||
Casero Profil |
#8 · Zasláno: 30. 4. 2006, 23:29:15
hmm..tak dík...
|
||
Rob Profil |
#9 · Zasláno: 1. 5. 2006, 10:03:14
koudi
To jsem dělal, až na ten timestamp. Jsem odečítal data v normální podobě. Ale jestli byste nemohli trochu konkretněji. Fce time() je OK. Jenom jak dostat timestamp z toho data, které vytahnu z DB. Jsem hledal v manuálu a našel jsem fci variant_date_to_timestamp() ale ta je v PHP5 a to mi je tak nějak k ničemu. Vím, že tohle je normální lama dotaz, ale řetězce a data mi nějak nepřirostli k srdci. |
||
Hugo Profil |
#10 · Zasláno: 1. 5. 2006, 10:18:08
Rob
Jak jsem už psal dřív, použij MySQL funkci unixtimestamp a dostaně datum v tom formátu, který potřebuješ. SELECT unixtimestamp(`datum`) from ... |
||
Časová prodleva: 11 měsíců
|
|||
J.R. Fish Profil * |
#11 · Zasláno: 27. 3. 2007, 00:27:30
pokud máš MySQL verze 5 a vyšší, tak pro porovnávání časů v timestampu je funkce
TIMESTAMPDIFF(jednotka,čas_1,čas_2) takže třeba SELECT TIMESTAMPDIFF(SECOND,uzivatele.Vytvoren,CURRENT_TIMESTAMP) FROM uzivatele WHERE ID=5 |
||
roberta Profil |
#12 · Zasláno: 27. 3. 2007, 01:09:16 · Upravil/a: roberta
skús sa pohrať s týmto, lebo nejako som možno nepochopil, aké dátumy chceš... predsa je už veľa hodín :)
select * from tabulka where datum > date_add(now(), interval 1 minute) tento select vyberie tie záznamy, ktoré majú datum väčší ako now + 1 minúta edit: už je asi fakt veľa hodín... skoro rok stará otázka, dobrú noc |
||
Joker Profil |
#13 · Zasláno: 27. 3. 2007, 08:02:18
Ještě by taky mohlo jít:
ADDTIME(NOW(), '0:1:0') resp.: ADDTIME('$datum','0:1:0') MySQL 4.1.1 a dál |
||
Časová prodleva: 17 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0