Autor | Zpráva | ||
---|---|---|---|
shinoba Profil * |
#1 · Zasláno: 28. 8. 2007, 11:40:00
Ahoj,
z databáze beru čas, který ještě není nastavený a to: "0000-00-00 00:00:00" a chtěl bych právě ověřit jestli se rovná nule. Zkoušel jsem to přes strtotime, ale to vrátí "943916400". Dá se toho docílit nějakou funkcí? |
||
nightfish Profil |
#2 · Zasláno: 28. 8. 2007, 11:58:51
tohle nefunguje?
if ($datum == "0000-00-00 00:00:00") |
||
shinoba Profil * |
#3 · Zasláno: 28. 8. 2007, 12:08:28
to funguje, ale chtěl bych se tomu vyhnout, nepříjde mi moc elegatní vypisovat 12 nul
|
||
Školník Profil |
#4 · Zasláno: 28. 8. 2007, 12:10:20
Nevypisuješ je jen jednou? :-)
|
||
shinoba Profil * |
#5 · Zasláno: 28. 8. 2007, 12:17:14
ano, ale 12:-)
kdyby byla nějaká funkce typu $timestamp = "0000-00-00 00:00:00"; //získáno z databáze if(nejaka_funkce($timestamp) == 0) .... tak mi to příjde elegantnější:-) |
||
nightfish Profil |
#6 · Zasláno: 28. 8. 2007, 12:26:40
function nejaka_funkce($ts) {
if ($ts == "0000-00-00 00:00:00") return 0; else return 1; } teď už nemusíš psát 12 nul, stačí ten kód zkopírovat :-) |
||
shinoba Profil * |
#7 · Zasláno: 28. 8. 2007, 12:27:24
nightfish
hehe:-) díky |
||
nightfish Profil |
#8 · Zasláno: 28. 8. 2007, 12:31:04
shinoba
ještě by šlo na straně mysql použít select unix_timestamp(sloupecsdatem) problém je v tom, že to ti vrátí 0 pro jakékoliv datum starší než 1.1.1970 |
||
shinoba Profil * |
#9 · Zasláno: 28. 8. 2007, 12:48:19
Teď jsem to zkoušel, ale nemám žádnej výstup...
$select = mysql_query("select unix_timestamp(time) FROM tabulka WHERE ... ); $result = mysql_fetch_assoc($select); echo $result['online_time']; bez toho unix_timestampu mi to vypíše datum na základě podmínky, s funkcí se nevypíše vůbec nic |
||
nightfish Profil |
#10 · Zasláno: 28. 8. 2007, 12:49:28
select unix_timestamp(time) as online_time FROM tabulka WHERE ...
|
||
shinoba Profil * |
#11 · Zasláno: 28. 8. 2007, 12:56:55
teď už jo...jsem to zkoušel, při normálním čase, dejme tomu 2007-08-28 12:39:33 tak mám klasický timestamp 1188297573 a při 0000-00-00 00:00:00 mám výstup 0 a to je přesně co jsem potřeboval:-) mnohokrát díky
|
||
nightfish Profil |
#12 · Zasláno: 28. 8. 2007, 12:59:17
shinoba
jak jsem již říkal - záleží na povaze datumů, které ukládáš - jestli je tam i něco před 1.1.1970 (třeba data narození apod.), tak mohou u funkce unix_timestamp() nastat problémy |
||
shinoba Profil * |
#13 · Zasláno: 28. 8. 2007, 13:08:15
není, doufám, že ne, to bych tam měl chybu:-) pro upřesnění, ukládám momentální čas, v případě, že v databázi ještě není uložen, sloupec v db je datetime a default je nastavenej právě na 0000-00-00 00:00:00, takže, když kontroluju záznam z db, tak vybírám jen ten jeden čas a když mi z 12 nul udělá jen jednu, tak je to dokonalý:-)
|
||
dracek Profil |
#14 · Zasláno: 28. 8. 2007, 13:15:34
Hele a proč to neukládáš do db jako int timestampu? Zkrátilo by ti to kód a potíže okolo :)
|
||
shinoba Profil * |
#15 · Zasláno: 28. 8. 2007, 13:33:37
dracek
není takovbej problém, když si vemeš, tak vše řeší jedna funkce v mysql. Jako je to taky možnost, ale v db je to pak přehlednější a v PHP se dá na to udělat funkce...ono záleží co člověk preferuje:-) |
||
Časová prodleva: 17 let
|
0