Конвертация даты

Enthusiast

Новичок
Конвертация даты

После экспортирования данных и базы firebird в mysql дата отображается 24.01.2007 как переконвектировать все даты в YYYY-mm-dd
 

Wicked

Новичок
в mysql даты всегда хранятся в формате yyyy-mm-dd, так что скорее всего понвертация уже на стороне клиента. Чем смотришь, что дата именно в таком формате?
 

Enthusiast

Новичок
ну на php можно скрипт сделать чтоб дату преревернул как надо во всей таблице из 24.01.2007 в 2007.01.24
 

Wicked

Новичок
Ты меня не понял.. или не читал. В базе данных, если поле имеет тип DATE (или DATETIME), дата в нем НЕ может быть в отличном от yyyy-mm-dd формате.

http://dev.mysql.com/doc/refman/5.1/en/datetime.html

А у тебя в каких типах полей у тебя эти недо-даты хранятся?
 

Wicked

Новичок
tf
та пагади ты. EMS, например, тоже мне всегда кажет в извращенском dd.mm.yyyy формате. Но это же не значит, что я должен бежать и базу перелопачивать.
 

Enthusiast

Новичок
у меня поле сейчас вообще char )) временно пока непереконвертирую )))
 

Wicked

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

PHP-скрипт писать не обязательно. Можно обойтись одним UPDATE запросом, который приведет эти строки к нужному виду.

За возможную потерю данных складываю с себя всякую ответственность. :)

Выглядит он примерно так:UPDATE ... SET `date` = CONCAT(SUBSTR(`date`, 6, 4), "-", SUBSTR(`date`, 3, 2), "-", SUBSTR(`date`, 0, 2)).
 

tf

крылья рулят
Wicked, перечитал :)
обычно даты использую для поиска, поэтому юзаю их
 

Enthusiast

Новичок
неа неполучается это запрос

$result = mysql_query("UPDATE ... SET `DATE$` = CONCAT(SUBSTR(`DATE$`, 6, 4), "-", SUBSTR(`DATE$`, 3, 2), "-", SUBSTR(`DATE$`, 0, 2))") or die("Ошибка запроса");
 

Wicked

Новичок

Фанат

oncle terrible
Команда форума
причем я порекомендую тренироваться на запросе select
а потом уже, получив требуемый результат, переходить к апдейту
 

Wicked

Новичок
мля... ОТКУДА там взялись какие-то $, не несущие вообще никакого смысла? Руки что ли чесались что-нибудь в запрос дописать, чтобы он гарантированно не заработал?

-~{}~ 28.07.07 06:01:

нда... ну и ночка

-~{}~ 28.07.07 06:03:

у тебя серьезно у поля в названии бакс стоит?
 

Enthusiast

Новичок
с firebrd всё было перенесено со структурой там этих $ много админу наверно хотелось много $ )))))))))))))))))))
 

Wicked

Новичок
Ну ладно. С баксом разобрались. Беру свои слова обратно.

Далее читай ссылочки (особенно первую), делай аналогичный работающий SELECT запрос. Когда увидишь, что он выводит даты именно в том формате, в котором нужно, можно будет запустить UPDATE.
 

Enthusiast

Новичок
да я наверно через пхп буду занаосить дату в массив точки будут разделять цифры, поприсваиваю цифры до точек переменным и буду записывать их обратно в нужном порядке в таблицу это конечно тормознее чем на sql но зато работает
 

Фанат

oncle terrible
Команда форума
что, слабак?
чкть проблемы начались - и лапки кверху?
только и можешь, что попрошайничать на форуме, а самостоятельно даже примитивный запрос написать не можешь?
 

Enthusiast

Новичок
напишу вылажу ))
негрусти)))

-~{}~ 28.07.07 11:44:

<?

$link = mysql_connect("localhost", "login", "pass") or die ("Нет соединения с хостом"); //
mysql_select_db ("base") or die ("Нет соединения с базой");
$sqls = "SELECT * FROM `base`.`table`"; // выбор базы и таблицы
$result1 = mysql_query($sqls) or die("Query failed1"); // отправка запроса
while ($row1 = mysql_fetch_assoc($result1)) // создаём массив и запускаем цикл
{

//echo $row1["DATE$"]."<br>";
$rowedit = $row1["DATE$"];
list($dd,$mm,$yyyy) = explode(".",$rowedit);

$array = array($yyyy, $mm, $dd);
$new_row = implode(".", $array);
$row_id = $row1["ID"];
$sql = "UPDATE `base`.`table` SET DATE$= '$new_row' WHERE ID='$row_id'";
mysql_query($sql)or die("Query failed1");


}

echo "ok!";
?>

написал такой скриптик теперь конвертирует даты но есть проблема теперь он неуспевет по времени обработать все записи и выдаёт сообщение Fatal error: Maximum execution time of 30 seconds exceeded in

-~{}~ 28.07.07 11:46:

можно конешно разбить на части LIMIT - ом но хотелосьбы всё сразу )))
 
Сверху