![]() |
![]() |
vavaha 06.05.2004 - 22:26 |
В phpMyAdmin 2.3.0 выбираю для одного из полей Тип поля "date". После этого по умолчанию 0000-00-00 (год-месяц-день). А как сделать чтобы было: день-месяц-год (00-00-0000)? Спасибо. |
Zeratul 1 - 06.05.2004 - 22:42 |
to vavaha: предлагаю тебе пойти несколько другим путем. Я храню в БД дату в формате int - количество секунд, прошедших с 1 января 1970 года. Команда date в PHP работает именно с этим форматом. Легко конвертируется в ЛБОЙ нужный формат, точность до секунды и вполне логичное упорядочивание. Рекомендую. |
Triton5 2 - 06.05.2004 - 22:49 |
Зератул дело говорит) хотя этот дебильный списоб хранить дату в секундах, что бы там ни говорили, исключительно плох:) юниксы, так их заногу:) |
Deflorator 3 - 06.05.2004 - 23:16 | 1 прав. хотя, проблема неудобства "ручного" просмотра БД налицо - ненаглядно. в то же время, масса удобств, напрмер, в поределении что было раньше, что позже - просто сравни число секунд. |
nd 4 - 06.05.2004 - 23:37 | хранение даты в yyyy-mm-dd hh:mm:ss тоже позволяет обойтись одним строковым сравнением |
Mexoc 5 - 06.05.2004 - 23:43 | Triton5, почему это он дебильный? |
Deflorator 6 - 07.05.2004 - 00:21 | nd, так то оно так, но сколько ресурсов сожрет скрипт на строковое сравнение, если записей неслабая кучка. подскажу: в несколько раз больше, чем в случае с числами. |
nd 7 - 07.05.2004 - 01:27 |
большое спасибо, что подсказал просто огромное |
AI 8 - 07.05.2004 - 08:06 |
мускул предоставляет кучу чудных агрегарных функций для работы с датой. то бишь не обязятально хранить дату в секундах. можно и как он сам просто если надо к примеру секунды делаешь так: <br> UNIX_TIMESTAMP(поле_с_датой_типом_datetime); например добавить месяц к дате UNIX_TIMESTAMP(DATE_SUB(NOW(),interval 1 MONTH ) то есть всё можно днелать средствами мускула и выдавать результат так как надо не обращаяс после к средствам PHP для преобразований. |
Zeratul 9 - 07.05.2004 - 10:25 |
to AI: отучайся чесать левой ногой правое ухо :) В смарти та же беда - они предлагают средствами шаблонизатора форматировать строки. И вообще: тебе не лень учить новые функции которые втупую дублируют имеющиеся в том же ПХП средства. Имхо, это интересно только в сексе :) А по поводу скорости: я таки не понял - нормальный программер в день отбивает работодателю разницу между нормальным и мощным процом... Намек ясен? |
AI 10 - 07.05.2004 - 11:15 | последний момент часто удобен если надо писать хранимые процедуры. конечно не в мускуле :-) когда процедура уже возращает окончательный результат. И в принципе мне часто в мускуле возращать так как надо сразу а не переделывать помто функциями PHP. Я не хочу сказать что то против . но мне так почему удобней зачастую даже в MySQL. |
Zeratul 11 - 07.05.2004 - 11:51 | Хранимые процедуры - базару нет. Тут встроенные возможности СУБД рулят. |
vavaha 12 - 08.05.2004 - 23:35 |
И еще - как бы сделать, чтобы пользаватель вводил дату в таком виде /день-месяц-год/ Спасибо |
vavaha 13 - 10.05.2004 - 19:49 |
Как сравнить две даты: первая - хранится в БД тип DATE вторая - текущая дата |
DIVЕR 14 - 10.05.2004 - 20:02 |
Преобразуешь одно в другое и сравниваешь =)))) Либо текущую в гггг-мм-дд и сравниваешь построчно, либо делаешь strtoint для даты из БД и сравниваешь числа. Второе предпочтительнее, но для этого лучше средствами SQL-сервера (в самом запросе) преобразовать дату в timestamp и потом уже сравнивать числа. |
vavaha 15 - 11.05.2004 - 17:21 |
До тусовки осталось ... дней! Как бы это еще можно сделать? Если можно подробно! Спасибо. |
vavaha 16 - 11.05.2004 - 17:29 | Zeratul, а как пользователь будет вводить дату (в каком виде)? |
vbirf 17 - 11.05.2004 - 23:04 | посекндно как в посте номер 1 конечная дата минус текущая потом делишь на 60 получаешь минут делишь еще на 60 получаешь часы и тд |
Mips 18 - 12.05.2004 - 21:40 |
round(($нужная_дата-time())/(60*60*24)) а вводить... да как угодно, какую форму и обработчик ввода сделаешь, такая и будет. Можно например вводить как "14 September 2004", а потом через strtotime() преобразовать в цифру. Главное проверять через checkdate(). А вообще, функция strtotime очень удобна для календарных вычислений, например, чтобы вывести новости за последний день, неделю, месяц, год. Ну и про mktime забывать не надо. ps: UNIX-формат даты мне тоже приглянулся, быстро и удобно. Использую везде. pss: Кстати, через 35 лет сие работать не будет, вернее будет работать неправильно. Хотя, изобретут поди чё-нить новое к тому времени :) psss: Два с половиной года назад мы пережили миллиардную секунду данного формата. Ох и нажрался же я тогда, 9 сентября было :) |
DIVЕR 19 - 12.05.2004 - 22:06 |
date( 'r', 2 в 30 степени ) => Sat, 10 Jan 2004 16:37:04 +0300 =)))) совсем недавно было, об этом ещё на мазе написали %) ps надо прибавлять букву p, а не s =) |