[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Не могу записать дату в БД в формате без разделите
GET
Здравствуйте.

Не могу сообразить, как записать в поле DATETIME (ну или TIMESTAMP, хотя нежелательно) дату в формате без разделителей т.е. не 2011-10-26 15:06:02,

а 20111026150602...всяко пробывал уже все равно проставляет их...нужно это для того, чтоб это стало одним из элементов имени файла, но т.к. Windows запрещает ":" в имени, то столкнулся с такой проблемой



Спустя 8 минут, 47 секунд (26.10.2011 - 14:23) YVSIK написал(а):
A.B.C. а как собстно это делал или сами догадайтесь ?
и напишите за меня?
а это делается приведением вида а потом занесения в базу но у же не формате DATE а так и пиши в числовом формате
или выводи и потом преобразуй из даты в числовой ))
ну примерно так )) цитата!!
Цитата
истина где то рядом ))
как говорит McLotos smile.gif

Спустя 1 минута, 26 секунд (26.10.2011 - 14:25) Winston написал(а):
Пиши в формате UNIX

Спустя 1 минута, 22 секунды (26.10.2011 - 14:26) killer8080 написал(а):
A.B.C.
в мускуле есть функция DATE_FORMAT()

Спустя 2 минуты, 54 секунды (26.10.2011 - 14:29) m4a1fox написал(а):
Как по мне так интереснее через функцию разбора прогнать а потом собрать! Но тут Winston прав! Имхо оптимальный вариант! Ну может еще time() может помочь!

Спустя 23 секунды (26.10.2011 - 14:29) GET написал(а):
YVSIK

собственно
$ddd=date('Ymdhhmmss');


и это не работает

Спустя 2 минуты, 23 секунды (26.10.2011 - 14:32) GET написал(а):
m4a1fox
мне бы желательно, чтоб ее визуально было видно..

Спустя 31 секунда (26.10.2011 - 14:32) killer8080 написал(а):
A.B.C.
в базу пишешь время как положено, а при выводе форматируешь
SELECT DATE_FORMAT(`time_field`, '%Y%m%d%H%i%s') AS `dt` FROM `table`

Спустя 6 секунд (26.10.2011 - 14:32) Winston написал(а):
Цитата (A.B.C. @ 26.10.2011 - 14:29)
собственно
$ddd=date('Ymdhhmmss');
и это не работает

Неужели? :blink:
Только символов ты налепил туда много, у тебя получится вот такая дата :D
20111026030310100909

Напиши
$ddd =  date('Ymdhis');

Спустя 1 минута, 21 секунда (26.10.2011 - 14:34) YVSIK написал(а):
а так ?????????

<?php $ddd=date('Ymdhhmmss');

echo $ddd ;
$ddd=date("'Y''m''d''h''h''m''m''s''s'");
echo $ddd ;
?>

а это результат как видишь!
20111026030310100404'2011''10''26''03''03''10''10''04''04'

Спустя 38 секунд (26.10.2011 - 14:34) caballero написал(а):
В поле БД нельзя записать (и смысла в этом никакого) дату в формате который вздумается - она хранится во внутреннем формате.



Спустя 1 минута, 13 секунд (26.10.2011 - 14:36) GET написал(а):
Вопрос решен сделаю, как Winston предложил в UNIX...наиболее наименее геморойный вариант...спасибо smile.gif


Спустя 3 минуты, 5 секунд (26.10.2011 - 14:39) m4a1fox написал(а):
Ща тупой вопрос!
Цитата
Не могу сообразить, как записать в поле DATETIME (ну или TIMESTAMP, хотя нежелательно) дату в формате без разделителей т.е. не 2011-10-26 15:06:02,

а 20111026150602...всяко пробывал уже все равно проставляет их...нужно это для того, чтоб это стало одним из элементов имени файла, но т.к. Windows запрещает ":" в имени, то столкнулся с такой проблемой

Нафига?

Спустя 36 секунд (26.10.2011 - 14:39) GET написал(а):
YVSIK

твой вариант в БД все равно будет в форме YYYY-MM-DD HH:MM:SS

Спустя 1 минута, 3 секунды (26.10.2011 - 14:40) GET написал(а):
m4a1fox

чтоб сделать эту строчку элементом имени файла, но чтоб при этом она в таблице была в поле ДАТА...чтоб ее как дату можно было вертеть при сортировках

можно конечно и варчаром сделать, но это уже не то...

и еще хотелось, чтоб ее визуально было видно, хотя вот я не понял еще про UNIX ...формат его в DATE поле можно записать?...

Спустя 1 минута, 5 секунд (26.10.2011 - 14:41) YVSIK написал(а):
а это ещё веселей ))))
<?php $ddd=date('Ymdhhmmss');

echo $ddd  .'<br>';
$ddd=date("'Y''m''d''h''h''m''m''s''s'");
echo $ddd .'<br>';

$ddd=date("'Y';'m'='d'op'h'///'h'9'm'0'm''s''s'");
echo $ddd .'<br>';
?>

20111026030310101313
'2011''10''26''03''03''10''10''13''13'
'2011';'10'='26'2011p'03'///'03'9'10'0'10''13''13'
:D :D :D

Спустя 44 секунды (26.10.2011 - 14:42) Winston написал(а):
Цитата (A.B.C. @ 26.10.2011 - 14:40)
можно конечно и варчаром сделать

int(10)

Спустя 10 секунд (26.10.2011 - 14:42) m4a1fox написал(а):
а формат date примет unix

Спустя 2 минуты, 26 секунд (26.10.2011 - 14:45) YVSIK написал(а):
A.B.C. запиши в базу не ватой а как говорил ранее вывел,
потом передал в переменную , и записал в числовом формате
не полем датой а полем числа !!

Спустя 3 минуты, 10 секунд (26.10.2011 - 14:48) m4a1fox написал(а):
ТС, простите, а как вы потом корректную дату выведите?

Спустя 1 минута, 33 секунды (26.10.2011 - 14:49) GET написал(а):
YVSIK

да мне надо чтоб в БД дата была в поле дата не ИНТ и не ВАР

Спустя 1 минута, 3 секунды (26.10.2011 - 14:51) GET написал(а):
m4a1fox

UNIX переведу обратно в дни...и месяцы...

п.с. только вот что-то не записывает в поле DATETIME он ее

Спустя 5 минут, 23 секунды (26.10.2011 - 14:56) m4a1fox написал(а):
A.B.C.
Цитата
только вот что-то не записывает в поле DATETIME он ее

Да ну! biggrin.gif
А вот говорил!
Цитата
а формат date примет unix

Спустя 33 секунды (26.10.2011 - 14:56) caballero написал(а):
дату нужно вставлять в том формате (строковом) что она понимает
date("Y-m-d H:i")
а не что попало

Можно попробовать юниксовый timestamp в виде целого - доллжно тоже схавать.

Спустя 1 минута, 21 секунда (26.10.2011 - 14:58) YVSIK написал(а):
A.B.C.так сделай два поля одно для ДАТЫ!! другое для числа !!
и выводи по надобности как те надо или из поля даты или из поля числа smile.gif

Спустя 22 секунды (26.10.2011 - 14:58) GET написал(а):
Вот здесь нашел, то что искал:

http://mysql.ru/docs/man/Date_and_time_functions.html

в самом низу страницы....

Спустя 2 минуты, 12 секунд (26.10.2011 - 15:00) YVSIK написал(а):
ху----Х))) ну на наконец-то!!

Спустя 1 минута, 29 секунд (26.10.2011 - 15:02) caballero написал(а):
Только то что нашел не соответствует вопросу который был задан

Спустя 3 минуты, 29 секунд (26.10.2011 - 15:05) GET написал(а):
YVSIK

smile.gif

caballero

согласен, но благодаря вам я понял, что хранить в MySQL в пользовательском виде, без разделителей, дату в полях отвечающих за время нельзя...даже в UNIX формате....все равно поставит разделители...и менять нужно уже в скрипте на выходе данных из БД...разве это не то нужно...


еще раз огромное всем спасибо

Спустя 29 минут, 51 секунда (26.10.2011 - 15:35) m4a1fox написал(а):
Не, ну меня игнорят все по ходу! Вот же писал еще почти в начале
Цитата
Как по мне так интереснее через функцию разбора прогнать а потом собрать!

Спустя 1 минута, 13 секунд (26.10.2011 - 15:36) Ramzil_Nixon написал(а):
А так нельзя?

	$result = mysql_query("INSERT INTO $news (id,title,content,date) VALUES ('$id1','$title','$content',now())");


now()


Записывает дату

Спустя 2 минуты, 44 секунды (26.10.2011 - 15:39) killer8080 написал(а):
Цитата (A.B.C. @ 26.10.2011 - 15:05)
...и менять нужно уже в скрипте на выходе данных из БД...разве это не то нужно...

а разве я это не показывал user posted image
Цитата (killer8080 @ 26.10.2011 - 14:32)
A.B.C.
в базу пишешь время как положено, а при выводе форматируешь
SELECT DATE_FORMAT(`time_field`, '%Y%m%d%H%i%s') AS `dt` FROM `table`


Спустя 1 минута, 24 секунды (26.10.2011 - 15:41) GET написал(а):
killer8080
а если в запросе несколько нужно полей вытащить за раз...разных типов?

Спустя 44 секунды (26.10.2011 - 15:41) GET написал(а):
Ramzil_Nixon

он запишет в БД дату с разделителями

Спустя 59 секунд (26.10.2011 - 15:42) GET написал(а):
m4a1fox


Ты прав...я к этому сейчас и пришел...к обычной регулярке:

preg_replace('#[^0-9]#','',$b['data']);


убить все кроме цифр...

Спустя 2 минуты, 16 секунд (26.10.2011 - 15:45) killer8080 написал(а):
Цитата (A.B.C. @ 26.10.2011 - 15:42)
Ты прав...я к этому сейчас и пришел...к обычной регулярке:

Бред.
Что конкретно тебе нужно выводить и в каком виде?

Спустя 56 секунд (26.10.2011 - 15:45) m4a1fox написал(а):
A.B.C.
Ну не знаю насчет регулярки! Но! killer8080 дело говорит! Я бы на твоем месте присмотрелся к его решению! Элегантно и логично! Не париться по этому поводу, а выбирать сразу правильно!

Спустя 2 минуты, 27 секунд (26.10.2011 - 15:48) killer8080 написал(а):
A.B.C.
если не нужно хранить даты до 70-го года используй TIMESTAMP.
Допустим на выходе тебе нужно отдельно дату и время, тода
SELECT DATE(`time_fileld`) AS `date`, TIME(`time_field`) AS `time` ...

Спустя 1 минута, 25 секунд (26.10.2011 - 15:49) GET написал(а):
killer8080

вот у меня есть дата (YYYYMMDDHHMMSS)...она в БД записывается в виде YYYY-MM-DD HH:MM:SS...(не важно поле DATETIME или TIMESTAMP)

Но еще у меня есть файл имя которого должно содержать YYYYMMDDHHMMSS...
т.е. когда я цепляю этот кусок (вытащенный из БД) к имени файла он не валиден, хотя бы из-за наличия ":", так вот варианты либо регуляркой убрать все лишнее либо...в UNIX формате записать и потом переводить...

Спустя 2 минуты, 57 секунд (26.10.2011 - 15:52) m4a1fox написал(а):
A.B.C.
Цитата
к имени файла он не валиден, хотя бы из-за наличия ":"

ну а explode применить вера не позволяет?

Спустя 30 секунд (26.10.2011 - 15:53) GET написал(а):
killer8080

"SELECT `int`,`varchar`,`date` FROM `table` WHERE `id`=1"

как по твоему реализовать такой запрос...без двух SELECT'ов....т.е. чтоб отдельно не писать для даты?

Спустя 42 секунды (26.10.2011 - 15:53) Winston написал(а):
Или
str_replace(':', '-', $b['data']);

Спустя 38 секунд (26.10.2011 - 15:54) GET написал(а):
m4a1fox

а зачем...там три левых символа: пробел, тире и двоеточие...

регуляркой же быстрее

Спустя 39 секунд (26.10.2011 - 15:55) killer8080 написал(а):
Цитата (A.B.C. @ 26.10.2011 - 15:49)
т.е. когда я цепляю этот кусок (вытащенный из БД) к имени файла он не валиден, хотя бы из-за наличия ":",

Блин ну в самом начале же показывал, но ты упорно игнорируешь
SELECT DATE_FORMAT(`time_field`, '%Y%m%d%H%i%s') AS `dt` FROM `table`


Спустя 41 секунда (26.10.2011 - 15:55) GET написал(а):
Winston
...да str_replace побыстрее будет чуть-чуть переменные короткие совсем...но будет внешне не очень красиво наверное...6 тире 6 групп цифр

Спустя 28 секунд (26.10.2011 - 15:56) m4a1fox написал(а):
A.B.C.
а зачем...там три левых символа: пробел, тире и двоеточие...

А! Ну да!

Спустя 1 минута, 38 секунд (26.10.2011 - 15:58) GET написал(а):
killer8080

Я не игнорирую...очень внимательно читаю...ты бы не мог в свой запрос вставить еще пару полей например INT или VARCHAR??? Может я чего не догоняю?....поле дата буде в группе полей вытаскиваться???

Спустя 1 минута, 42 секунды (26.10.2011 - 15:59) m4a1fox написал(а):
Цитата
.да str_replace побыстрее будет чуть-чуть переменные короткие совсем...но будет внешне не очень красиво наверное...6 тире 6 групп цифр

А в str_replace можно еще и массив не желательных символов передать! Имхо конечно но она быстрее!

ну прости, Я не в куриваю проблему! ВООБЩЕ! Ты занес данные в БД в виде YYmmddHHssii а выводи как killer показал! В чем то проблема?! Не поверишь я не понимаю!

Спустя 31 секунда (26.10.2011 - 16:00) m4a1fox написал(а):
A.B.C.
Цитата
Я не игнорирую...очень внимательно читаю...ты бы не мог в свой запрос вставить еще пару полей например INT или VARCHAR??? Может я чего не догоняю?....поле дата буде в группе полей вытаскиваться???

Да легко, через запятую перечисляй!

Спустя 37 секунд (26.10.2011 - 16:00) killer8080 написал(а):
A.B.C.
в каком формате хранишь дату/время?

Спустя 1 минута, 16 секунд (26.10.2011 - 16:02) m4a1fox написал(а):
killer8080
Цитата
в каком формате хранишь дату/время?

Правильно, давай с начала все! rolleyes.gif

Спустя 1 минута, 53 секунды (26.10.2011 - 16:04) GET написал(а):
killer8080

datetime

Спустя 1 минута, 49 секунд (26.10.2011 - 16:05) caballero написал(а):
Цитата
благодаря вам я понял, что хранить в MySQL в пользовательском виде, без разделителей, дату в полях отвечающих за время нельзя...даже в UNIX формате....все равно поставит разделители...и менять нужно уже в скрипте на выходе данных из БД...разве это не то нужно...


Ничего ты не понял. Никаких разделителлей БД не ставит.

При вставке дата должны быть в таком формате чтобы сервер БД мог его распарсить и сохранить в своем внутреннем бинарном формате. Возвращаются данные в дефолтном строковом формате (зависящем от локали сервера и пр.) если не задано явно соотвветствующими функциями.

Фигею блин. Сайтоа на PHP Mysql уже милионы сделаны и в с каждом даты юзаються. А тут четвертая страница с постами вокруг того как вставить и вынуть элементарное значение в поле.

Спустя 29 секунд (26.10.2011 - 16:06) GET написал(а):
m4a1fox

вставь в этот запрос другие поля через запятую:

SELECT DATE_FORMAT(`time_field`, '%Y%m%d%H%i%s') AS `dt` FROM `table`

Спустя 57 секунд (26.10.2011 - 16:07) m4a1fox написал(а):
SELECT DATE_FORMAT(`time_field`, '%Y%m%d%H%i%s') AS `dt`, `id`, `name` FROM `table`

Спустя 59 секунд (26.10.2011 - 16:08) killer8080 написал(а):
SELECT DATE_FORMAT(`time_field`, '%Y%m%d%H%i%s') AS `dt`, `field1`, `field2`, `field3` FROM `table`

В чем проблема?
Или
SELECT DATE_FORMAT(`time_field`, '%Y%m%d%H%i%s') AS `dt`, * FROM `table`

Спустя 21 секунда (26.10.2011 - 16:08) GET написал(а):
caballero

как не ставит!!!...а чо же я сижу то тогда???

В офф документации написано что БД хранит дату в виде YYYY-MM-DD HH:MM:SS

для DATETIME

Спустя 1 минута, 15 секунд (26.10.2011 - 16:09) m4a1fox написал(а):
A.B.C.
Ну и! killer8080 и я показали как!!! В чем проблема?

Спустя 1 минута, 8 секунд (26.10.2011 - 16:10) GET написал(а):
killer8080
m4a1fox

Парни прошу прощения вы все правильно писали...

killer8080...я просто не сообразил с запросом, действительно не надо никаких регулярок, можно прямо из запроса в нужной форме все вытащить!

Спустя 49 секунд (26.10.2011 - 16:11) GET написал(а):
ohmy.gif ...ну 2 месяца не садился за php

Спустя 36 секунд (26.10.2011 - 16:12) killer8080 написал(а):
Цитата (A.B.C. @ 26.10.2011 - 16:10)
killer8080...я просто не сообразил с запросом, действительно не надо никаких регулярок, можно прямо из запроса в нужной форме все вытащить!

Не можно, а нужно smile.gif

Спустя 24 секунды (26.10.2011 - 16:12) m4a1fox написал(а):
Пожалуйста!

Спустя 3 минуты, 40 секунд (26.10.2011 - 16:16) caballero написал(а):
Цитата
В офф документации написано что БД хранит дату в виде YYYY-MM-DD HH:MM:SS

Это так переведено. Хранит она в бинарном формате который придумали разработчики сервера и описали в соответствующей сишной структуре.

YYYY-MM-DD HH:MM:SS - это строковый формат который БД поймет если он придет на вставку. И в таком формате по умолчанию отдаст данные. Если будет применена функция типа DATE_FORMAT то отдаст в пользовательском формате.


Цитата
Ну и! killer8080 и я показали как!!! В чем проблема?


Проблемма в разговоре слепого с глухим.




Спустя 2 минуты, 21 секунда (26.10.2011 - 16:18) m4a1fox написал(а):
caballero
Цитата
Проблемма в разговоре слепого с глухим
biggrin.gif

Спустя 37 секунд (26.10.2011 - 16:19) GET написал(а):
caballero
я сообразил...


Всем огромное спасибо...smile.gif

Спустя 4 минуты, 52 секунды (26.10.2011 - 16:24) killer8080 написал(а):
A.B.C.
Да не за что smile.gif
Дату можно форматировать как на стороне БД, так и в PHP. ИМХО удобней из БД брать уже в нужном виде. rolleyes.gif

Спустя 2 минуты, 51 секунда (26.10.2011 - 16:27) m4a1fox написал(а):
К ТС вопрос! Скажи, а дата формата на сайте будет какой? То есть так 2011-04-11 или 11 апреля 2011 года?

Спустя 3 минуты, 54 секунды (26.10.2011 - 16:31) GET написал(а):
m4a1fox

Да всякой будет...в зависимости от странички...где-то месяц и число, а где-то цифрой, а что?

Спустя 2 минуты, 57 секунд (26.10.2011 - 16:33) m4a1fox написал(а):
A.B.C.
Да так! Просто интересно было! Хотел поделиться мыслью про отображение даты. Вот скажи как ты будешь выводить вот такой вариант? 3 декабря 2011
Твои идеи?

Спустя 4 минуты, 46 секунд (26.10.2011 - 16:38) GET написал(а):
У меня есть функция преобразования в месяца в слово:

function date_look1($data)
{
$month_arr = array(
'00'=>'',
'01'=>'января',
'02'=>'февраля',
'03'=>'марта',
'04'=>'апреля',
'05'=>'мая',
'06'=>'июня',
'07'=>'июля',
'08'=>'августа',
'09'=>'сентября',
'10'=>'октября',
'11'=>'ноября',
'12'=>'декабря',);

$m=mb_substr($data,5,2,'UTF-8');
$day=mb_substr($data,8,2,'UTF-8');

$moment=$day." ".$month_arr[$m];
return $moment;
}

Спустя 58 минут, 5 секунд (26.10.2011 - 17:36) m4a1fox написал(а):
A.B.C.
А! Ну здорово!

Спустя 6 минут, 50 секунд (26.10.2011 - 17:43) killer8080 написал(а):
Цитата (m4a1fox @ 26.10.2011 - 16:33)
A.B.C.
Да так! Просто интересно было! Хотел поделиться мыслью про отображение даты. Вот скажи как ты будешь выводить вот такой вариант? 3 декабря 2011
Твои идеи?

это что ли?
function get_my_date($time = null){
return strtr(date("j M Y", $time ? $time : time()), array(
'Jan' => 'января',
'Feb' => 'февраля',
'Mar' => 'марта',
'Apr' => 'апреля',
'May' => 'мая',
'Jun' => 'июня',
'Jul' => 'июля',
'Aug' => 'августа',
'Sep' => 'сентября',
'Oct' => 'октября',
'Nov' => 'ноября',
'Dec' => 'декабря'
));
}

Спустя 7 минут, 54 секунды (26.10.2011 - 17:51) m4a1fox написал(а):
killer8080
Ну да! Мне просто интересно было! Как-то по молодости сам столкнулся, вот думал подсказать человеку какие подводные камни ждут его, а он готов уже! smile.gif

Спустя 1 минута, 3 секунды (26.10.2011 - 17:52) killer8080 написал(а):
Цитата (m4a1fox @ 26.10.2011 - 17:51)
вот думал подсказать человеку какие подводные камни ждут его, а он готов уже!

А что они там есть rolleyes.gif biggrin.gif

Спустя 2 минуты, 24 секунды (26.10.2011 - 17:55) m4a1fox написал(а):
killer8080
А что? Нету? biggrin.gif Ладно, проехали!

Спустя 34 минуты, 40 секунд (26.10.2011 - 18:29) imbalance_hero написал(а):
m4a1fox
А смысл? Эту функцию, что показал автор, как раз Попов и давал в своих видео-курсах :) Даже у него есть, что уж там говорить про остальных :)

A.B.C.
Если бы работал с операционными системами, то должен понимать, что сортировка файлов идёт по символам, вот пример:
1000-10-10
1020-20-20
1030-30-30
11
12
13
14
2
21
3000-11-11

По этой же системе и используется сортировка даты, именно поэтому в таком, а не в другом виде хранятся данные внутри БД! То есть БД за тебя решила, как ей удобно хранить, и ты не должен туда лезть. Твоя задача - правильно вывести данные из БД и в том порядке, в котором тебе надо. Для этого, как сказали на первой странице, идеально подходит именно DATE_FORMAT (функция мускула).

Ещё раз, видел пример посимвольной сортировки выше, а теперь подумай, могла бы БД сортировку осуществлять такой записи:
01-11-2010
11-11-2000
20-22-1800
30-30-3000

Вот в таком порядке посимвольно она была бы отсортирована, а не в обратном. Получается сортировка идёт не ПО ДАТЕ, а по символам, что облегчает работу и не создаёт хаос вроде "каждый хранит так, как ему хочется".

Спустя 3 минуты, 48 секунд (26.10.2011 - 18:33) m4a1fox написал(а):
Цитата
Эту функцию, что показал автор, как раз Попов и давал в своих видео-курсах

Я прогулял этот урок! smile.gif

Спустя 21 минута, 24 секунды (26.10.2011 - 18:54) killer8080 написал(а):
Скрытый текст
Цитата (m4a1fox @ 26.10.2011 - 18:33)
Я прогулял этот урок!
к директору с родителями  laugh.gif


Спустя 6 часов, 57 минут, 15 секунд (27.10.2011 - 01:52) GET написал(а):
imbalance_hero

вообще то я ее сам сделал...можно ссылку на урок Попова? Я начинал с Попова, но такой функции там не встречал. Либо это странное совпадение.

Спустя 13 минут, 11 секунд (27.10.2011 - 02:05) imbalance_hero написал(а):
A.B.C.
Да я не спорю, что сам! Может сам, может переделал, суть дела не меняет. Я проходил курсы 1,5 года назад, чтобы найти то место, мне понадобится всё пересматривать.


_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.