Avatar billede vb_begynder Nybegynder
18. marts 2006 - 18:57 Der er 20 kommentarer og
1 løsning

tid + tid

Hej

har tiden fra serveren
$tid = time("H:i:s");

og en tid hentet fra database f.eks.
$ventetid = "00:30:00";

jeg skal så ha lagt de 2 tider sammen men hvordan ?
Avatar billede kdjweb Nybegynder
18. marts 2006 - 19:01 #1
list($timer,$min,$sek) = explode(":",$tid);
list($vtimer,$vmin,$vsek) = explode(":",$ventetid);

$tiden = $timer+$vtimer.":".$min+$vmin.":".$sek+vsek;

jeg har ikke testet det
Avatar billede kdjweb Nybegynder
18. marts 2006 - 19:05 #2
$sek+$vsek
Avatar billede vb_begynder Nybegynder
18. marts 2006 - 19:07 #3
det er fint men hvis min+Vmin er over 60 hvad så ?

håber der er en mere simpel måde php er jo normalt ganske smart
Avatar billede Slettet bruger
18. marts 2006 - 19:08 #4
timestamp = sysdate - timestamp
vil altid være tiden der er gået fra log til nu
Avatar billede kdjweb Nybegynder
18. marts 2006 - 19:12 #5
eller så skal du bruge mktime
Avatar billede jakobdo Ekspert
18. marts 2006 - 19:13 #6
Hvad med at hent tiden via MYSQL også?
så du henter: SELECT ADDDATE(NOW(),INTERVAL +ventetid MINUTE) FROM tabel

og så lave ventetid være minutter.
Avatar billede vb_begynder Nybegynder
18. marts 2006 - 19:15 #7
jakobdo,

det skal prøves....
Avatar billede vb_begynder Nybegynder
18. marts 2006 - 19:24 #8
hmm det virker ikke helt jakobdo

men vil prøve at arbejde lidt med det
Avatar billede vb_begynder Nybegynder
18. marts 2006 - 19:30 #9
har kigget lidt i mySQL manuelen og afprøvet det i PHPmyAdmin:

SELECT ADDTIME('01:00:00.999999', '02:00:00.999998')

MySQL returnerede:

#1064 - You have an error in your SQL syntax.  Check the manual that corresponds to your MySQL server version for the right syntax to use near '(  '01:00:00.999999',  '02:00:00.999998' )' at line 1
Avatar billede jakobdo Ekspert
18. marts 2006 - 19:37 #10
Klokken er nu:
19:36
jeg brugte koden:
SELECT ADDDATE( NOW( ) , INTERVAL +30 MINUTE )
Det gav mig: 2006-03-18 20:06:25
Avatar billede vb_begynder Nybegynder
18. marts 2006 - 20:23 #11
ok har prøvet det og det virker, men kan ikke få det til at virke når jeg bruger Ventetid i stedet for 30 ......
Avatar billede vb_begynder Nybegynder
18. marts 2006 - 20:30 #12
SELECT DATE_FORMAT(ADDDATE( NOW( ) , INTERVAL +30 MINUTE ), '%H:%i:%s');

og her for jeg det også formateret rigtigt...
Avatar billede vb_begynder Nybegynder
18. marts 2006 - 20:31 #13
skal jeg lave en select inden i select eller ?
Avatar billede jakobdo Ekspert
18. marts 2006 - 21:08 #14
Altså hvordan ligger 30?
Er det på en bruger?
Prøv at giv mig alle info du måtte have i en linie, hvor 30 står.
Du har vel noget id og nogle andre info.
Avatar billede vb_begynder Nybegynder
18. marts 2006 - 21:17 #15
tabel test1:
ID  int(11)  Nej    auto_increment             
Ventetid  int(11)  Nej  0   

ID  |Ventetid
-----------------
1  |30

SELECT ADDDATE( NOW( ) , INTERVAL + Ventetid MINUTE ) from test1
Avatar billede jakobdo Ekspert
18. marts 2006 - 21:35 #16
SELECT ADDDATE( NOW( ) , INTERVAL +Ventetid MINUTE ) from test1 WHERE id = 1
Avatar billede vb_begynder Nybegynder
18. marts 2006 - 21:40 #17
virker ikke
Avatar billede jakobdo Ekspert
18. marts 2006 - 21:48 #18
Det er mærkeligt!
Det virker hos mig:

SELECT ADDDATE( NOW( ) , INTERVAL + ventetid
MINUTE )
FROM tbl_696201
WHERE id =1

CREATE TABLE tbl_696201 (
  id tinyint(3) unsigned NOT NULL auto_increment,
  ventetid mediumint(9) NOT NULL default '0',
  PRIMARY KEY  (id)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_danish_ci;

INSERT INTO tbl_696201 VALUES (1, 30);

Det giver: 2006-03-18 22:17:58
Avatar billede vb_begynder Nybegynder
18. marts 2006 - 22:07 #19
Har oprette samme tabel som dig og indsat dine data...

Fejl

SQL-forespørgsel : 

SELECT ADDDATE( NOW( ) , INTERVAL + ventetid MINUTE )
FROM tbl_696201
WHERE id =1
LIMIT 0 , 30

MySQL returnerede:


#1064 - You have an error in your SQL syntax.  Check the manual that corresponds to your MySQL server version for the right syntax to use near '+ ventetid MINUTE )
FROM tbl_696201
WHERE id =1 LIMIT 0, 30'

der kører en mySQL 4.0.24_Debian på serveren.. kan det være fordi det er en ældre version ?
Avatar billede jakobdo Ekspert
18. marts 2006 - 22:30 #20
Jeg kører mysql: 4.1.14 Freebsd.

Og her er documentationen fra mysql:

ADDDATE(date,INTERVAL expr  type), ADDDATE(expr,days)

When invoked with the INTERVAL form of the second argument, ADDDATE() is a synonym for DATE_ADD(). The related function SUBDATE() is a synonym for DATE_SUB(). For information on the INTERVAL argument, see the discussion for DATE_ADD().

mysql> SELECT DATE_ADD('1998-01-02', INTERVAL 31 DAY);
        -> '1998-02-02'
mysql> SELECT ADDDATE('1998-01-02', INTERVAL 31 DAY);
        -> '1998-02-02'

As of MySQL 4.1.1, the second syntax is allowed. When invoked with the days form of the second argument, MySQL treats it as an integer number of days to be added to expr.

mysql> SELECT ADDDATE('1998-01-02', 31);
        -> '1998-02-02'
Avatar billede vb_begynder Nybegynder
19. marts 2006 - 12:40 #21
har selv fundet udaf hvordan jeg ligger 2 tider sammen i PHP
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester