Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: парсер (замена дат в бд)
Покинул форум
Сообщений всего: 499
Дата рег-ции: Янв. 2010 Откуда: Россия, Москва
Помог: 1 раз(а)
Здравствуйте, требуется заменить все даты в БД. (цель, он(а?) же вопрос)
По логике действий скрипта: (возможно я ошибаюсь)
1. Вывод данных из бд в массив
2. Разбиение даты (типа дд.мм.гггг)по переменным (типа $d $m $S) - explode? регулярка(одна переменная)?
3. Сбор даты в переменную (массив) в виде гггг/мм/дд - implode ?
4. Замена имеющихся данных в бд на новые (как он поймет, что менять, если все в массиве...)?
- логика бредовая вышла.
----- Для некоторых лучший способ написать что-нибудь осмысленное - это сесть _опой на клавиатуру.
Мелкий
Отправлено: 29 Декабря, 2010 - 10:20:43
Активный участник
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
Таки что надо?
В базе есть дата дд.мм.гггг, надо её привести к виду гггг/мм/дд? А нафига? Приводите сразу к виду YYYY-MM-DD, потом головной боли меньше будет.
Действия такие:
(например, есть поле date в таблице table)
0) создаёте поле daten типа DATE
1) выполняете
При выводе даты с вида YYYY-MM-DD в вид DD-MM-YYYY использовать регулярное?
----- Для некоторых лучший способ написать что-нибудь осмысленное - это сесть _опой на клавиатуру.
Мелкий
Отправлено: 29 Декабря, 2010 - 14:21:16
Активный участник
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
LEONeso пишет:
При сортировке использовать совет CenapaTop?
Если поле в формате date - то сортировать можно прямо по нему. Это нативный формат даты, MySQL знает, как его сортировать.
LEONeso пишет:
При выводе даты с вида YYYY-MM-DD в вид DD-MM-YYYY использовать регулярное?
Лучше всё-таки нативной date_format, ссылку на которую я привёл выше.
----- PostgreSQL DBA
JustUserR
Отправлено: 29 Декабря, 2010 - 18:06:08
Активный участник
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
LEONeso В общем случае для осуществленя массовой замены информационных полей в таблице БД по заданному критерию при услови реализации исходной выборки на основании аналогичного элемента возможно использование следующей схемы - оператор UPDATE используется внутренний счетчик включенный элементов и выполняет операцию изменения для каждого реального элемента единственный раз - что обеспечивает защиту его от включения в текущий запрос при условии изменения в нем некоторго параметра которое начинает отвечать условию выборки
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
LEONeso
Отправлено: 26 Января, 2011 - 08:18:16
Посетитель
Покинул форум
Сообщений всего: 499
Дата рег-ции: Янв. 2010 Откуда: Россия, Москва
Помог: 1 раз(а)
Поднимаю старую тему, чтоб не плодить новые. Как грамотно делать выверку по дате используя только год и месяц, которые передаются методом POST ?
в таблице использую DATE timestamp вида 2011-01-01 00:00:00 (по умолчанию)
$result=mysql_query("SELECT * FROM duty WHERE department='".$_POST['department']."' AND date LIKE '".$_POST['year']."-".$_POST['month']."-%' ORDER BY fio");
единственное, что значение месяца передается без нуля перед десятичных.
$result=mysql_query("SELECT * FROM duty WHERE department='".$_POST['department']."' AND date LIKE '".$_POST['year']."-".($_POST['month']<='9'?'0':'').$_POST['month']."-%' ORDER BY fio");
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.