Autor Zpráva
CATerPILAR
Profil
Ahoj,
potřeboval bych zjistit jak porovnat 2 datumy.
V databázi mám uložené $datum (jako varchar) a jestli tohle datum jde nejak porovnávat se systémovým datumem DATE("j.n.Y").
Chtel bych to takhle:
if(bude starsi) ......
if(bude mladsi)......
else stejne...........

dekuju.
Martin
Casero
Profil
no lepší je porovnávat datum ve formátu time(), unix_timestamp jestli to je varchar, tak to rozdělit, podle teček, a každý to šílo zvlášt porovnat s tím systémovým...
djlj
Profil
1. píše se data ;)

2. píše se datem ;)

3. mohl jsi napsat, v jakém přesně formátu to máš v databázi uložené. Možná by ani nebylo třeba to dělit, jak psal Casero.
Casero
Profil
djlj
on píše jak to tam má, ne??
Casero
Profil
nebo jaoo myslíš j.n.Y ..??
Retal
Profil
djlj
Uf, díky za péči o jazyk. Datum je klasika. :)

CATerPILAR
V jakém formátu to v tom varcharu máš uložené? A proč to máš ve varcharu?
CATerPILAR
Profil
V databázi je to uložené ve formátu j.n.Y, ale jako varchar.
Zkoušel jsem použít datový typ DATE ale nejak mi to nefungovalo.
Datum zjistim pomoci DATE(j.n.Y) a ten pak ukladam do databaze jako "varchar". Kdyz jsem to tam ukladal jako "date" tak se mi tam nejak spravne nezobrazoval letopocet nebo tak neco, uz presne nevim.

Takze jak?
Hugo
Profil
Ukládat datum do db jako varchar je blbost, protože ti to znemožní využívat funkce MySQL pro práci s časem.

Pokud chceš uložit aktuální čas, tak můžeš použít funkci NOW(), jinak správný formát data pro datový typ datetime je YYYY-MM-DD HH:MM:SS.

http://dev.mysql.com/doc/refman/5.0/en/datetime.html

http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html
finc
Profil
Složitě :)
A co takhle napsat skript, ktery převede ten varchar na typ date? Je to otázka chvíle. Určitě to bude menší zlo, než si hrát s typem varchar. Navíc by jsi měl brát v úvahu přelom týdne, měsíce, roku, počet dní v měsící apod. Pokud chceš tohle všechno ošetřovat šílenými funkcemi v mysql, tak ti to osobně nezávidím :)

Proč lézt oknem, když můžu jít dveřmi?

P.S. Když ukládáš datum do sloupce typu date tak ho ukládej v standartním iso formátu yyyy-mm-dd
Nevíš jak uložit datum a chceš fce na práci s varchar jako date? To vidím dost nereálně.
CATerPILAR
Profil
Tak tedy malá ukázka:

//vytvorim tabulku
mysql_query("create table datum (id int auto_increment primary key, datum date )",$db);
//zjistim datum
$datum=DATE("Y-j-n");
echo $datum; // toto mi vypíše tvar YY.DD.MM, dnes tedy 2006-2-6

//ulozim datum do DB
$result = mysql_query("insert into datum values ('','$datum') ",$db);

//vypisu datum
$result = mysql_query("select * from datum order by id limit 1",$db);
while ($vypis = mysql_fetch_array($result))
{
echo $vypis[1]; //toto mi vypise 2006-02-06. V pořádku.
}


ted bych potreboval fci ktera umit porovnavat datumy.
finc
Profil
melo by to byt:
date("y-m-d"); // yyyy-mm-dd

pro ulozeni aktualniho datumu staci:
INSERT INTO table (id, datum) VALUES ('1', NOW())

// porovnani
SELECT * FROM table WHERE datum = 'yyyy-mm-dd'

SELECT * FROM table WHERE datum BETWEEN 'min' AND 'max'
PajaXXX
Profil *
Zdravím,

potřeboval bych pomoci. Potřebuju do databáze mysql ukládat dva datumy. Od - do. V databazi s nimi budu nadale pracovat. Porovnavat a tridit podle datum atd. Nevite jak na to?
Zadavani datumu z formalure treba i pomoci kalendare. dekuji
djlj
Profil
ukládat dva datumy
Patrně chceš ukládat dvě data.
Udělej si tedy nějaký ten kalendář, jak říkáš, a odeslaná data vlož do databáze. Zeptal ses tak obecně, že lépe se snad odpovědět nedá.
PajaXXX
Profil *
Dobre tak to upresnim,


potrebuji ukladat informace, ktere se budou zobrazovat od napr. 19.01.2007 do 22.01.2007. A ted nevim jak ukladat ty datumy do databaze mysql. Kdyz uzivatel do formulare napise datum 19.01.2007
tak jak ho prevest, aby se dal ulozit do databaze mysql ( to zna formatovani 2007-19-01).

Co s tim
djlj
Profil
PajaXXX
A ted nevim jak ukladat ty datumy
Patrně máš na mysli data.

Jednoduše si to datum, které uživatel odešle, rozděl pomocí funkce explode a vlož jak potřebuješ. Nebo ať to uživatel vkládá rovnou ve tvém formátu :).
Toto téma je uzamčeno. Odpověď nelze zaslat.