Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > Серверные технологии и Flash

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 21.04.2013, 15:13
fduch вне форума Посмотреть профиль Отправить личное сообщение для fduch Найти все сообщения от fduch
  № 1  
Ответить с цитированием
fduch

Регистрация: Jun 2012
Сообщений: 142
По умолчанию CURRENT_TIMESTAMP в Mysql как отделить данные друг от друга?

В MySql в одном из полей прописано
Тип: TimeStamp, По умолчанию: CURRENT_TIMESTAMP.
Соответственно оно туда сует дату и время создания поля.
При обращении к базе мы дергаем это поле
PHP код:
$datetime=$row['datetime']; 
как мне разбить это на отдельные переменные, число/месяц/час/минута ?

Добавлено через 10 минут
Понятно что можно обратиться как
PHP код:
(int)$datetime[0]+$datetime[1
и тд. А по проще както можно?

Добавлено через 18 минут
И в догонку вопрос, как посчитать допустим сколько дней прошло с момента создания поля,
PHP код:
$curentdate-$datetime 
выдает разницу только в годах. тоесть если создано в 2013 году то 0 если в 2012 то 1.

Добавлено через 1 час 33 минуты
Написал вот такую фигню, работает конечно...
PHP код:
$datetime=$row['age'];

$god "$datetime[0]$datetime[1]$datetime[2]$datetime[3]";
$mes "$datetime[5]$datetime[6]";
$den "$datetime[8]$datetime[9]";

$chas "$datetime[11]$datetime[12]";
$min "$datetime[14]$datetime[15]";
$sec "$datetime[17]$datetime[18]";

echo 
"god= ".$god." mes= ".$mes." den= ".$den." chas= ".$chas." min= ".$min." sec= ".$sec
По "человечески" это можно както сделать?

Старый 21.04.2013, 16:53
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 2  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
А зачем ставить временную метку в виде даты?
По-моему проще, и надежнее использовать юникстайм.

PHP код:
$unixtime time(); 
Запрашивать из базы последнюю метку юникс тайм, и отнимать ее от текущей. Так можно получить количество секунд прошедшее с последнего обновления метки. И, соответственно узнать часы, минуты и т.д.

Старый 21.04.2013, 18:52
fduch вне форума Посмотреть профиль Отправить личное сообщение для fduch Найти все сообщения от fduch
  № 3  
Ответить с цитированием
fduch

Регистрация: Jun 2012
Сообщений: 142
Мне нужно не с последнего обновления а именно с момента создания поля...
Есть такая Фтука
PHP код:
strtotime($datetime); 
если оба значения привести к стрингу, то норм высчитывается разница между ними в секундах.

Старый 21.04.2013, 19:02
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 4  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
Мне нужно не с последнего обновления а именно с момента создания поля...
Это сути не меняет.
Цитата:
если оба значения привести к стрингу, то норм высчитывается разница между ними в секундах.
Повторяю, юникстайм для этих целей лучше.

Код AS3:
$user_id 	= 	mysql_real_escape_string($user_id); // допустим что соединение с базой уже установлено
$query 		= 	"SELECT creation_time FROM `some_table` WHERE user_id = '$user_id' LIMIT 1";
$result 	= 	mysql_query($query);
$row		= 	mysql_fetch_array($result, MYSQL_ASSOC);
$unixtime 				= time();
$creation_time			= intval($row['creation_time']); // берем из базы время создания чего-то там
$minutes_since_creation	= intval(($unixtime - $creation_time) / 60); // получаем количество минут
$hours_since_creation	= intval(($unixtime - $creation_time) / 60 / 60); // часов
и т.д.

Старый 21.04.2013, 20:18
fduch вне форума Посмотреть профиль Отправить личное сообщение для fduch Найти все сообщения от fduch
  № 5  
Ответить с цитированием
fduch

Регистрация: Jun 2012
Сообщений: 142
Суть я понял, не понял разницы между
PHP код:
$unixtime                 time(); 
и
PHP код:
$time=strtotime(date('Y-m-d H:i:s')) 
Чем юникстайм лучше?

Старый 21.04.2013, 20:32
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 6  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Тем что не будет никаких дополнительных манипуляций, типа разбиения строки, проверки каждой ее отдельной части и расчета секунд.
Тем более с датой вариант не всегда будет правильно работать, особенно если часовые пояса не так выставить на сервере.

Старый 21.04.2013, 22:28
Sync вне форума Посмотреть профиль Отправить личное сообщение для Sync Найти все сообщения от Sync
  № 7  
Ответить с цитированием
Sync
 
Аватар для Sync

Регистрация: Feb 2013
Сообщений: 176
Если мне память не изменяет, то при выборке можно делать UNIX_TIMESTAMP(field) и сразу получать готовый таймштамп. умножаем его на 1000, и создаем новый объект Date от этого значения. И не надо ничего преобразовывать, парсить, разбивать.
ЗЫ. ну либо я не так понял вопрос)

Создать новую тему Ответ Часовой пояс GMT +4, время: 07:35.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 07:35.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.