Date Format

  • Автор темы Arsench
  • Дата начала
A

Arsench

#1
Здравствуйте дорогие профессионалы,

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


Спасибо заранее и извините за плохой русский язык.
 
E
#2
В базе нет форматов, они только при отображении!
 
G

GOsha

#3
Я наоборот пишу как ГГГГ/ММ/ДД, т.к. при сортировке по этому полю будет правильный результат.
Если ДД/ММ/ГГГГ, то получится, что 10/06/08 стоит выше чем 15/06/09, но ниже чем 08/12/1986... Я понятно абиссняю. А переставить можно при помощи строковых функций.
 
A

Arsench

#4
Я наоборот пишу как ГГГГ/ММ/ДД, т.к. при сортировке по этому полю будет правильный результат.
Если ДД/ММ/ГГГГ, то получится, что 10/06/08 стоит выше чем 15/06/09, но ниже чем 08/12/1986... Я понятно абиссняю. А переставить можно при помощи строковых функций.
спасибо большое,
дело в том что поле должен заполнит пользователь как дд/мм/гггг а не гггг/мм/дд а отображение уже делаю я и отображается как дд/мм/гггг
 
V

Vovochka

#5
Ну зделать пару функций, преобразований:
Код:
function mirror_date($date) {
preg_match('/^(\\d{2,4})\\/(\\d{2})\\/(\\d{2,4})$/', $date, $m);
return "$m[3]/$m[2]/$m[1]";
}
print mirror_date('2004/12/21'); // 21/12/2004
Причем эта функици работает в обе стороны. Только если на вход правильные данные подавать.
 
G

GOsha

#6
У меня другая. Подлиннее:
Код:
 function DateConvert($mode,$string)
{
if($mode=='2sys')
{
if(!ereg("([0-9]{2}).([0-9]{2}).([0-9]{4})", $string))
{
$c_date = 'ERR';
}
else
{
$sys_str=$string;
$sys_m=substr($sys_str,3,2); //12.12.1233
$sys_y=substr($sys_str,6,4);
$sys_d=substr($sys_str,0,2);
$c_date=$sys_y.$sys_m.$sys_d;
}
}
if($mode=='2man')
{
$f_str=$string;
$f_y=substr($f_str,0,4);
$f_m=substr($f_str,4,2);
$f_d=substr($f_str,6,2);
$c_date=$f_d.".".$f_m.".".$f_y;
}
return $c_date;
}
 
E
#7
Ребята, про типы полей дататайм и иже, слыхали?
 
G

GOsha

#9
Слыхали, но не помню почему я отказался.
Кстати один фиг, если мне надо будет изменить это значение мне строку разворачивать придется... ПРиечм в обе стороны. Та же фигня.
 
G

GOsha

#11
2 etc:
Что неправильно?
1. вот сделал я запрос к базе.
2. Получил строку: 20071012 дальше мне что с ней делать, чтобы показать юзеру?
3. Развернуть с помощью чего? Строковых функций
4. Юзер меняет дату на свою и мне ее нужно записать
5. Нужно опять развернуть строку.
6. Записать в базу

Так? Или я что-то упустил?
 
E
#12
Если тип соответственный, то это не строка. И сортировка и поиск и т.д. при запросе уже совсем по другому работают.
А что до редактирования, то пользователь всегда! (ну или в 99% случаев) работает именно со строками, и что? вас не смущает что какоенибудь целоцисленное данное он тоже редактирует по средствам строки, или вы и их в базе как строкой держите? Или у вас в базах только строки на все?

Так? Или я что-то упустил? ;)
 
G

GOsha

#13
Упустил. Допустим возвращается переменная. Определенного типа. НО! Када юзер правит форму - именно строки он и правит. По поводу сортировки - на то оно все и разворачивается, чтобы сортировка давала правильный результ.

Теперь самое веселое:
Назовите, пожалуйста, мне тип переменной в ПХП, полученной из этого поля в MySQL.

По поводу выпада "в базах одни строки держим" - там много разных типов полей, просто дэйттайм я посчитал излишним.
 
E
#15
GOsha Дык небыло никакого выпада, я засомневался и задал вопрос.
Назовите, пожалуйста, мне тип переменной в ПХП, полученной из этого поля в MySQL.
Подрукой нету пхп, что-бы проверить, но думаю что при фетче придет объект, и мне думаеться, что это не строка. :)

Када юзер правит форму - именно строки он и правит.
Правильно, и про это я вам и говорил. Деньги например он тоже правит как строки, и что? Вот в базе например есть некий баланс, и надо по средствам какогото интерфейса докинуть туда, например $100.5, тоже вбивать будут как строку. а в базе нет ...