Дата в База данни?

meleto

Registered
Здравейте,

имам поле start в БД, където датата се записва в следния синтаксис
$date1 = date("d-m-Y");

И примерно искам да сравнявам в mysql заявка start с текущата дата с този синтаксис.


Тоест, ако ми е записана датата 7.11.2011
да сравнявам с дати от същия тип 9.11.2011

и то в mysql заявка?

Гледах date(), но нищо не открих за сравняване в БД и без промяна в timestamp?

`start`>'$date1' в WHERE клаузата си я подминава...най-вероятно не е така.
 
relax4o каза:

На мен ми трябва да сравнявам стойност вече добавена в базата данни и променлива.

И двете са с еднакъв синтаксис.

Тая функция нещо не ми свърши работа. :oops:
 
А защо не записваш timestamp? Винаги можеш да ползваш DATE_FORMAT, когато вадиш или след изваждането да го ръгнеш в date(); . Направи си полето да ти е timestamp и сравнявай по него.
 
relax4o каза:
А защо не записваш timestamp? Винаги можеш да ползваш DATE_FORMAT, когато вадиш или след изваждането да го ръгнеш в date(); . Направи си полето да ти е timestamp и сравнявай по него.

На мен ми е по-удобно с такъв формат.

Интересно е,че като напиша в заявката start>$date няма резултат, но и грешка не дава, но като обърна знака ми излизат 2 записа :D
 
meleto каза:
$date1 = date("d-m-Y");
Датите са особен вид данни. Форматирането при датите служи само за представяне пред потребителя в по-нормален вид. От гледна точка на базата-данни, това което ти запазваш - 7.9.2011 не е дата, а някакъв текст. Аз съм сигурен, че и колоната ти е от тип varchar или нещо подобно.

meleto каза:
На мен ми е по-удобно с такъв формат.
Ако искаш да използваш MySQL за операции с дати, няма абсолютно никакво значение на теб как ти е удобно, а какво поддържа и предлага като функционалност, съответния сървър за бази от данни. В случая с MySQL, и при положение че съхраняваш годината, месеца и деня, използвай поле от тип DATE. Дата ще се съхранява като Y-m-d (2011-09-11) и след това имаш на разположение повече от 30 MySQL функции за работа с дати и време, с които можеш да правиш абсолютно всичко, за което се сетиш.

http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html

meleto каза:
Интересно е,че като напиша в заявката start>$date няма резултат, но и грешка не дава, но като обърна знака ми излизат 2 записа
Защото сравнението не е сравнение на две дати, а на два текста. Това, което в момента виждаш в базата-данни и на теб ти прилича на дата, за MySQL не е дата. Идеята да има различни типове полета е точно тази - да укажеш, по стандартен начин, какъв тип информация съхравяваш там.

В какъв формат ще представиш датата пред потребитея е съвсем друг въпрос и няма нищо общо с формата, в който съхраняваш тази дата в базата-данни. В случая се използват функциите за форматиране на дата, каквато впрочем има и MySQL, но само ако му подадеш поле от тип DATE или подобните му, MySQL може да ти изкара датата в какъвто си искаш формат, подобно на РНР date функцията.
 

Back
Горе