Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Текстовая дата -> DATE | TIMESTAMP | DATETIME, MySQL 
:(
    Опции темы
MuToGeN
Дата 6.6.2004, 22:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лесник
****


Профиль
Группа: Модератор
Сообщений: 4379
Регистрация: 15.8.2002
Где: Москва

Репутация: нет
Всего: 32



Писал один... эээ... не очень опытный программист движок к сайту. И придумал хранить дату в виде "06.06.2004/23:00" в поле типа TEXT. А меня заставили за ним баги фиксить.
Вопрос: как бы это дело переконвертить нормальный вид? Т.е. DATETIME или INT (таймстемп) или DATE?


--------------------
Three pings for the token rings,
Five pings for the UNIX machines,
Hundred pings for the broken links,
One special ping to check them all
Through Simple Network Management Protocol!
PM MAIL ICQ   Вверх
DENNN
Дата 7.6.2004, 00:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 3878
Регистрация: 27.3.2002
Где: Москва

Репутация: 2
Всего: 43



Ну если это MySQL, то там можно сначала текстовыми функциями вырезать из всей строки отдельные цифры, а затем вставить это же занчение в поле типа DATE "собрав в нужном порядке.
Запрос будет что-то вида
insert into table (date_field) values select .....

сорри, но уже половина второго ночи и как в MySQL форматируется дата не вспомню sad.gif
PM ICQ   Вверх
Mal Hack
Дата 7.6.2004, 01:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 8
Всего: 261



Сама СУБД тут я думаю не справитяс... Придется Языком.
Предварительно выбрав все записии даты, предварительно создав поле для новой даты.
Идем по записям.
Код
<?php

while( $row = mysql_fetch_object( $Result ) )
{
 $temp = explode( "/" , $row -> data );

 $dt = explode( "." , $temp[0] );
 $wr = $dt[2] . "-" . $dt[1] . "-" . $dt[0];

 // To DATATIME
 str_replace( "/" , " " , $temp );
 mysql_query( "UPDATE table` WHERE `data` = '" . $row -> data . "' SET `data_new` = '" . $wr . " " . $temp . "' ");

 // To DATA
 mysql_query( "UPDATE table` WHERE `data` = '" . $row -> data . "' SET `data_new` = '" . $wr . "' ");

 // To TIMESTAMP
 $tm = explode( ":" , $temp[1] );
 $time = mktime( $tm[0] , $tm[1] , 0 , $dt[1] , $dt[0] , $dt[2] );
 mysql_query( "UPDATE table` WHERE `data` = '" . $row -> data . "' SET `data_new` = '" . $time . "' ");
}

?>


Это сообщение отредактировал(а) Mal Hack - 7.6.2004, 01:05
PM ICQ   Вверх
MuToGeN
Дата 7.6.2004, 02:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лесник
****


Профиль
Группа: Модератор
Сообщений: 4379
Регистрация: 15.8.2002
Где: Москва

Репутация: нет
Всего: 32



Неее...
Вот ср-вами своей программы как раз не хочется.
Ладно, буду копаться в мануалах на тему текстовых ф-ий, как посоветывал DENNN


--------------------
Three pings for the token rings,
Five pings for the UNIX machines,
Hundred pings for the broken links,
One special ping to check them all
Through Simple Network Management Protocol!
PM MAIL ICQ   Вверх
boevik
Дата 7.6.2004, 08:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1452
Регистрация: 31.5.2004
Где: Израиль

Репутация: 2
Всего: 35



Копай в сторону STR_TO_DATE, ей можно и формат стринга опредлить в котором записана твоя дата.


--------------------
Никогда не говори никогда
PM MAIL WWW   Вверх
DENNN
Дата 7.6.2004, 09:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 3878
Регистрация: 27.3.2002
Где: Москва

Репутация: 2
Всего: 43



Цитата
Сама СУБД тут я думаю не справитяс... Придется Языком.

Ну вы прям обижаете ....

Вот например вставка значений в поле dt_field типа DATE из старой таблицы table_old.
Сорри, но минуты секунды описывать ломает smile.gif
Цитата

insert into table_new (dt_field) values select CONCAT(MID(field,4,4),"-",MID(field,2,2),"-",MID(field,0,2)) from table_old where 1=1;

PM ICQ   Вверх
MuToGeN
Дата 10.6.2004, 18:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лесник
****


Профиль
Группа: Модератор
Сообщений: 4379
Регистрация: 15.8.2002
Где: Москва

Репутация: нет
Всего: 32



Все решилось функцией STR_TO_DATE()


--------------------
Three pings for the token rings,
Five pings for the UNIX machines,
Hundred pings for the broken links,
One special ping to check them all
Through Simple Network Management Protocol!
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




[ Время генерации скрипта: 0.0456 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.