|
|
|
| Запутался немного.
Нужно сравнить дату1 и дату2..
я так понимаю нужно перевести её с помощью mktime()?
Если да то правильно ли я перевожу?
mktime(0,0,0,08,11,2008);
|
тобишь часы,минуты,секунды упускаем и щитаем 08 - месяц, 11 - день, 2008 - год?
потом точно также переводим вторую и сравниваем? | |
|
|
|
|
|
|
|
для: sl1p
(11.08.2008 в 16:10)
| | Так можно делать, если дата попадает в диапазон 1970-2038гг
Если даты хранятся в формате MySQL 'YYYY-MM-DD' их можно сравнивать прямо. | |
|
|
|
|
|
|
|
для: Trianon
(11.08.2008 в 16:29)
| | дата хранится как текст дд.мм.гггг
как такое можно сравнить?
тоесть кароче скажу прямо цель.
есть запись в бд 11.08.2008 (текст)
мне нужно сделать проверку чтобы юзер не ввёл дату меньше той что в бд..
как посравнивать то) | |
|
|
|
|
|
|
|
для: sl1p
(11.08.2008 в 16:32)
| | переделать в БД запись на нормальный формат. | |
|
|
|
|
|
|
|
для: Trianon
(11.08.2008 в 16:55)
| | хм а если потом эту самую дату мне нужно выдать в другом формате? как её переставить?)
да не ну это бред я уверен можно както и не в мускульном формате сравнить=\
получается юзер должен будет тоже вводить дату криво в гггг.мм.дд=\
или перестановка под такой формат лишняя етня=\ | |
|
|
|
|
|
|
|
для: sl1p
(11.08.2008 в 17:00)
| | Переделайте поле с датой в БД в тип DATE и сравнивайте как обычные строки при запросе к БД | |
|
|
|
|
|
|
|
для: sl1p
(11.08.2008 в 17:00)
| | >хм а если потом эту самую дату мне нужно выдать в другом формате? как её переставить?)
Для этого применяется MySQL-функция DATE_FORMAT() - уже на этапе получения результатов запроса.
>я уверен можно както и не в мускульном формате сравнить=\
>да не ну это бред
Я тоже уверен, что можно, и даже знаю , как именно.
И не менее Вашего убежден что это бред. А бредовые решения я стараюсь здесь не предлагать, чтоб они потом не тиражировались другими.
>
>получается юзер должен будет тоже вводить дату криво в гггг.мм.дд=\
Вовсе нет. пользователь вводит дату в привычно ему формате. Скрипт преобразует в стандартный.
В стандартном формате дата уходить в БД и там хранится. При необходимости скрипт преобразует дату в привычный пользователю формат.
Мало кому известный факт: привычный большинству людей формат - именно восточный.
Помимо этого он крайне удобен из-за сравнений и сортировок.
И, наконец, он автодетерминируемый. Если написано 03/05/2008 можно долго гадать третье мая это или пятое марта. Если написано 2008/05/03 - вариант один.
>или перестановка под такой формат лишняя етня=\
Фразы не понял. | |
|
|
|
|
|
|
|
для: Trianon
(11.08.2008 в 17:48)
| | > Фразы не понял.
Лишняя е*ня :) | |
|
|
|
|
|
|
|
для: Trianon
(11.08.2008 в 17:48)
| | извиняюсь,почему итак понятно если 2008.05.03? Мне не понятно напримерО_о мне привычна только дд.мм.гггг по возрастанию так сказать) | |
|
|
|
|
|
|
|
для: sl1p
(11.08.2008 в 18:04)
| | Это не важно - привычно или нет. Это только в таблице будет дата в таком формате. | |
|
|
|
|
|
|
|
для: BinLaden
(11.08.2008 в 18:11)
| | а я понял.. я думал привычно людям вообще)
----
ну вот хорошо, есть дата в бд в её формате. Как дальше?) | |
|
|
|
|
|
|
|
для: sl1p
(11.08.2008 в 18:04)
| | ну хорошо допустим я поменял в бд поле на дату. Как теперь сравнить с вводимым текстом?=\ он же не находится в бд.. | |
|
|
|
|
|
|
|
для: sl1p
(11.08.2008 в 18:04)
| | потому что 03/05/2008
может быть написано европейцем (и тогда это будет 3 мая)
может быть написано американцем(и тогда это будет 5 марта)
А 2008/05/03 может быть написано азиатом (кем-то из китая/кореи/японии)
А они пишут дату только в порядке убывания весов разрядов. Как время.
Вы, полагаю, европеец - вот Вам и привычно. | |
|
|
|
|
|
|
|
для: Trianon
(11.08.2008 в 18:14)
| | так или иначе придётся сравнивать не в бд, потому как вторая дата находится не в бд=\ | |
|
|
|
|
|
|
|
для: sl1p
(11.08.2008 в 18:18)
| | Почему? MySQL позволяет сравнивать значения полей со строками и числами. | |
|
|
|
|
|
|
|
для: sl1p
(11.08.2008 в 18:18)
| | а это несущественно.
Нормально сравнить элементы (что в SQL что в php) Вы сможете только тогда, когда они поразрядно выровнены, и записаны начиная со старшего. В случае чисел такие тонкости берет на себя процессор, со строками же приходится возиться программисту. | |
|
|
|
|
|
|
|
для: Trianon
(11.08.2008 в 18:37)
| | хм. ну ок есть 2 даты формата г.м.д. как их сравнить? | |
|
|
|
|
|
|
|
для: sl1p
(11.08.2008 в 19:09)
| | Обычно. С помощью <, >, !=, <>, >=, >=. | |
|
|
|
|
|
|
|
для: BinLaden
(11.08.2008 в 19:21)
| | тоесть тупо так?
<?
$date="2008.11.08";
$date2="2008.11.08";
if ($date>$date2) echo "Bolwe"; else echo "ne bol'we";
?>
|
| |
|
|
|
|
|
|
|
для: sl1p
(11.08.2008 в 19:44)
| | Да. | |
|
|
|
|
|
|
|
для: BinLaden
(11.08.2008 в 19:48)
| | всем сенко) | |
|
|
|
|
|
|
|
для: sl1p
(11.08.2008 в 19:44)
| | Главное не забывать, что дату 2011.9.1 надо писать как 2011.09.01
например
2011.9.1>2011.10.1 - т.е. неверный результат сравнения
2011.09.01<2011.10.01 - т.е. верный результат сравнения | |
|
|
|
|
|
|
|
для: sl1p
(11.08.2008 в 16:10)
| | Подскажите, а как правильно перевести дату из формата dd.mm.yyyy в формат yyyy.mm.dd, если исходная дата хранится в переменной $_POST.
Я так понимаю нужно грабить в цикле командой eregi до точки и записывать в пемеменные, а потом просто переставить их так как мне нужно. Верно или что-то не так? | |
|
|
|
|
|
|
|
для: Keyses
(05.03.2009 в 13:01)
| | Можно даже и без регулярок. explode например. | |
|
|
|
|
|
|
|
для: ols
(05.03.2009 в 13:09)
| | спасибо. | |
|
|
|
|
|
|
|
для: Keyses
(05.03.2009 в 13:26)
| | да | |
|
|
|