Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: помогите с TIMESTAMP

Сообщения:  [1-10]    [11-20]   [21-30]  [31-31] 

 
 автор: Trianon   (20.07.2007 в 21:46)   письмо автору
 
   для: Binura   (20.07.2007 в 20:43)
 

возможно. Но лучше на php.

   
 
 автор: Binura   (20.07.2007 в 20:43)   письмо автору
 
   для: Trianon   (20.07.2007 в 20:28)
 

все работает...

но хотелось бы еще

1) убрать секунды

2) если день и часы равны 0 то их не выводить...

это возможно? =)

   
 
 автор: Trianon   (20.07.2007 в 20:28)   письмо автору
 
   для: Binura   (20.07.2007 в 20:23)
 

извините. Ошметки от проверочных действий вкрались.


$sql = "   
SELECT    
        online.*,   
        CONCAT(    
         ((UNIX_TIMESTAMP(newtime)-UNIX_TIMESTAMP(oldtime)) DIV 86400),'  ',    
         SEC_TO_TIME((UNIX_TIMESTAMP(newtime)-UNIX_TIMESTAMP(oldtime)) MOD 86400)) as dif    
  FROM online    
"; 

   
 
 автор: Binura   (20.07.2007 в 20:23)   письмо автору
 
   для: Binura   (20.07.2007 в 20:18)
 


$sql = "  
SELECT   
        tbl.*,  
        CONCAT(   
         ((UNIX_TIMESTAMP(newtime)-UNIX_TIMESTAMP(oldtime)) DIV 86400),'  ',   
         SEC_TO_TIME((UNIX_TIMESTAMP()-UNIX_TIMESTAMP(stamp)) MOD 86400)) as dif   
  FROM tbl   
";


что то я не могу такой запрос сделать...

таблица online
oldtime
newtime

как прально сделать запрос?

   
 
 автор: Binura   (20.07.2007 в 20:18)   письмо автору
 
   для: Trianon   (20.07.2007 в 20:00)
 

тогда можно не использовать
on update CURRENT_TIMESTAMP
=(

   
 
 автор: Trianon   (20.07.2007 в 20:00)   письмо автору
 
   для: Binura   (20.07.2007 в 19:50)
 

присвойте ему значение напрямую.

UPDATE `online` 
   SET ntime=NOW() 
WHERE `id`='$ID'

   
 
 автор: Binura   (20.07.2007 в 19:50)   письмо автору
 
   для: Trianon   (20.07.2007 в 19:24)
 

вот спасибо... =) пошла тестировать..
но вот еще вопросик, на счет UPDATE...
как сделать?

мне нужно обновить только одно поле, и то это поле
`ntime` TIMESTAMP NOT NULL default '0000-00-00 00:00:00' on update CURRENT_TIMESTAMP ,

т.е. я не обновляю поля, надо чтоб скрипт сам обновил время,
как то так...
UPDATE `online` WHERE `id`='$ID'

   
 
 автор: Trianon   (20.07.2007 в 19:24)   письмо автору
 
   для: Binura   (20.07.2007 в 18:00)
 

Да, забыл сказать. CONCAT (a, b, c, d) это всё равно что в php $a . $b . $c . $d

В конце концов, если Вам не нравится вычислять строку средствами SQL
можете написать функцию перевода.

function human_interval($sec)
{
    $dsec = $sec % (24*3600);
    $days = ($sec - $dsec)/ (24*3600);
 
    $min = $dsec % 3600;

    $hour = ($dsec-$min)/3600;
    $sec = $min %60;
    $min = ($min-$sec)/60;
    return sprintf("%d %02d:%02d:%02d", $days, $hour, $min,  $sec);
}

и обращаться к ней вместо date

   
 
 автор: Trianon   (20.07.2007 в 19:16)   письмо автору
 
   для: Binura   (20.07.2007 в 18:00)
 

Вы неправильно поняли. Этот оператор формирует всё что Вам нужно.
<?
$sql 

SELECT  
        tbl.*, 
        CONCAT(  
         ((UNIX_TIMESTAMP(newtime)-UNIX_TIMESTAMP(oldtime)) DIV 86400),'  ',  
         SEC_TO_TIME((UNIX_TIMESTAMP()-UNIX_TIMESTAMP(stamp)) MOD 86400)) as dif  
  FROM tbl  
"
;

$res mysql_query($sql);
while(
$row mysql_fetch_assoc($res))
{
    echo 
'<pre>';
    
print_r($row);
    echo 
'</pre>';
}

   
 
 автор: Binura   (20.07.2007 в 18:00)   письмо автору
 
   для: Trianon   (20.07.2007 в 17:25)
 

хорошо....
а как с этим работать? =)

SELECT  
  CONCAT( 
   ((UNIX_TIMESTAMP(newtime)-UNIX_TIMESTAMP(oldtime)) DIV 86400),'  ', 
   SEC_TO_TIME((UNIX_TIMESTAMP()-UNIX_TIMESTAMP(stamp)) MOD 86400)) as dif  
FROM tbl 


что делает CONCAT()?

я так поняла это только для дней, а как часы и минуты сделать?

   

Сообщения:  [1-10]    [11-20]   [21-30]  [31-31] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования