Ahoj, mám problém se řazením výsledku dotazu z databáze a chtěl bych se zeptat, jestli jste se s tím nesetkali.
Tabulka má strukturu:
[id:bigint(20)]
[data:text]
[date_change:timestamp;ON UPDATE CURRENT_TIMESTAMP;CURRENT_TIMESTAMP]
[date_entry:timestamp]
Pokud na tuto tabulku pošlu 'SELECT * FROM tabulka ORDER BY date_entry DESC' tak se stejnak řadí podle date_change a vůbec netuším proč... :(
Moc díky
Fórum › MySQL
ORDER BY timestamp
Míša
Pokud na tuto tabulku pošlu 'SELECT * FROM tabulka ORDER BY date_entry DESC' tak se stejnak řadí podle date_change
Bude to tím typem sloupců -- TIMESTAMP -- nepoužívat, pokud nemáš dobrý důvod ho použít. (Jediný dobrý důvod použití je tehdy, když chceš zaznamenávat poslední změnu záznamu a nechceš to dělat ručně. Ovšem i v tomto případě je prostě lepší explicitně říct, že sloupec se má UPDATEovat na NOW() podle mě.)
Sloupec date_change (předpokládám dobře, že je to daum poslední změny příspěvku?) můžeš nechat jako TIMESTAMP s DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, ale date_entry nastav jako DATETIME. Dotaz pro vytvoření tabulky pak může vypadat následovně:
CREATE TABLE tabulka (
id BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
data TEXT NOT NULL,
date_change TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
date_entry DATETIME NOT NULL
);
Jelikož MySQL nepodporuje u DATETIME jako DEFAULT hodnotu funkce jako NOW() a u TIMESTAMP jde dát DEFAULT CURRENT_TIMESTAMP pouze pro jeden sloupec v tabulce, je potřeba to při vkládání udělat explicitně:
INSERT INTO tabulka (data, date_entry) VALUES ('Lorem ipsum...', NOW());
date_change se nastaví sám.
Další možností je by mělo být přidat trigger, který by date_entry nastavil na NOW().
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
[DB] mysql typ TIMESTAMP vs TIMESTAMP v PHP — založil pecan987
Mysql a timestamp — založil bach
Převod číslo na TimeStamp — založil DaviS
Sloupec konstatnt typu timestamp — založil ondra
Moderátoři diskuze