как преобразовать строку в дату?

Владимир777111

Новичок
как преобразовать строку в дату?

есть две переменные varchar, например

20070204
20060131


надо получить переменную равную округленному до целого количеству месяцев между первой переменной и второй
в данном случае 12,
PHP:
$var1 =$row['dat_e']; 
$var2 =$row['dat_n']; 

echo "$var1"; 
echo "<br>"; 
echo "$var2"; 
echo "<br>"; 
$time1 = getdate($var1); 
$time2 = getdate($var2); 

echo "$time1[hours]:$time1[minutes] $time1[mday].$time1[mon].$time1[year] <br>"; 
echo "$time2[hours]:$time2[minutes] $time2[mday].$time2[mon].$time2[year] <br>";

выходит
20070204
20060131
13:3 21.8.1970
10:15 21.8.1970

неправильно
 

Фанат

oncle terrible
Команда форума
почему varchar, а не date?
почему Colocation, а не MySQL?
почему вычисления производятся в скрипте ,а не в запросе?
 

Владимир777111

Новичок
если я преобразую, данные сохраняться?
просто сейчас пользователи вводят дату в формате
23.05.2006 так им удобнее,

и потом дата в формате 20060523 записывается в базу

if (strlen(trim($dat_n))==10)
{$dat3=substr($dat_n,0,2);
$dat2=substr($dat_n,3,2);
$dat1=substr($dat_n,6,4);
$dat_n=$dat1*10000+$dat2*100+$dat3;}

$request = "UPDATE delf_company
SET dat_n = '$dat_n',
WHERE id = ".$id_company;
$result = mysql_query($request);




а из базы достается для редактирования опять как 23.05.2006
 

Владимир777111

Новичок
пользователи внесли в форме 23.05.2006 и 23.04.2007 как varchar
нужно посчитать количество месяцев между этими датами
 

Фанат

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

Владимир777111

Новичок
в базе храниться как varchar 20060523 и 20070423 соответственно для возможности сортировки
нужно посчитать количество месяцев между этими датами
 

Фанат

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

Владимир777111

Новичок
уже забито более 10000 записей как varchar, если я преобразую в date данные 20060523 в каком виде будут?
 

Фанат

oncle terrible
Команда форума
неправильно поставлен вопрос.
сначала надо преобразовать к привильному формату, а потом менять тип поля.
 

Фанат

oncle terrible
Команда форума
да.
и работая с этим форматом, ты получишь весь арсенал функций мускуля для работы сдатой.
в том числе - перевод в количество дней, или в юникс таймстамп, а так же арифметические операции с датами - сложение, вычитание, и так далее
http://www.mysql.ru/docs/man/Date_and_time_functions.html
 

Владимир777111

Новичок
спасибо

-~{}~ 23.05.06 14:42:

а в каком виде после смены поля на date нужно заносить переменные? как "2006-05-23"?
 
Сверху