Avatar billede nixir Nybegynder
09. april 2007 - 23:12 Der er 12 kommentarer og
1 løsning

Formatering af tid (ex. 800 til 8:00)

Jeg har et tidspunkt der skifter... Jeg får tidspunktet i formatet: date("Hi") = 0632 = kl 6.32, men da det bliver lagret i mysql int, bliver det til 632...

Jeg ønsker at formaterer fra ex. 632 til 6:32, men 1719 skal stadig blive til 17:19.

Jeg ville først dele den med str_split($tid, 2) - men da den fjerner nul'et når jeg gemmer i databasen, går det ganske enkelt ikke.

Jeg skal kunne lave < / > / = min tid når jeg laver udtræk andre steder, så ville meget gerne beholde det som en int.

Det burde være lige til. Har ledt efter en funktion der fx ligesom str_split() deler den op, blot bagfra - uden held.

Håber der er nogle eksperter der kan hjælpe for lidt nemmer point.

Mvh.
Avatar billede Slettet bruger
09. april 2007 - 23:25 #1
Det mest optimale ville være at du ændre din datatype i databasen fra 'int' til 'time'
Avatar billede nixir Nybegynder
09. april 2007 - 23:54 #2
jeg er ikke en haj til database struktur heller, så hvis du kunne fortælle mig lidt om time?

Jeg skal senere kunne sammenligne med aktuel tid - der er intet med dato, det er ren tid som i kl er 14.40... Timer + Minutter ...

Så hvis jeg stadig kan sammenholde om tiden er større end/mindre end/lig med senere er det helt fint med mig at ændre fra int til time.


Andre løsningsforslag modtages også gerne...
Avatar billede dkfire Nybegynder
10. april 2007 - 00:33 #3
Du kan sagtens sammenligne tider når du bruger time i databasen.
Avatar billede nixir Nybegynder
10. april 2007 - 10:14 #4
Okay ...

Hvordan laver jeg så en sammenligning? Hvordan vil min WHERE del af forespørgelsen så se ud?

Og hvordan gemmer jeg korrekt i time?

Og når man bruger time - bruger man så time uden en dato (ligesom jeg skal i mit tilfælde)?
Avatar billede nixir Nybegynder
10. april 2007 - 10:29 #5
Jeg læste lige lidt inde på dev.mysql, der står man kan benyttet formatet 'HH:MM'..

Hvordan opretter jeg en collonne med med formatet 'HH:MM'?

Hvordan foretager jeg en sammenligning med formatet 'HH:MM'? Skal det jeg sammenligner med være i formatet 'HH:MM' eller hvordan?

Hvordan udskriver jeg i formatet 'HH:MM'?
Avatar billede showsource Seniormester
10. april 2007 - 11:16 #6
Kan ikke lige se der er mulighed for at gemme som time og minut alene, hvis det skal være et "tidsfelt", men hvis du sætter feltet til et DATETIME gemmes der i formatet,
YY-MM-DD HH:MM:SS
Og bruger du NOW() ved insert, vil den aktuelle tid blive gemt,
INSERT INTO tabel (tidfelt) VALUES (NOW())
f.eks. 2007-04-10 11:31:59

I din query kan du så bruge DATE_FORMAT()

SELECT DATE_FORMAT(tidfelt, '%k:%i') as tid FROM tabel

så vises det som timer:minutter
Avatar billede showsource Seniormester
10. april 2007 - 11:20 #7
Du kan også bruge UNIX_TIMESTAMP() i din INSERT, uden at du skal ændre i din tabel, (andet end sørge for at længden på feltet er ok), og derefter bruge FROM_UNIXTIME()

SELECT FROM_UNIXTIME(tidfelt,'%k:%i') as tid
Avatar billede nixir Nybegynder
10. april 2007 - 11:27 #8
Jeg har ikke mulgihed for at tjekke om det her virker på den her pc, men hvad siger i til det? Har læst mig frem til at man burde kunne gøre noget i denne stil.. Det er open_from og open_to der er de vigtige her.

CREATE TABLE `jk_openings` (
  `open_id` int(11) NOT NULL auto_increment,
  `open_day` int(1) NOT NULL default '0',
  `open_from` time(HH:MM) default NULL,
  `open_to` time(HH:MM) default NULL,
  `kiosk_id` int(11) NOT NULL default '0',
  PRIMARY KEY  (`open_id`)
) TYPE=MyISAM AUTO_INCREMENT=1 ;

INSERT INTO `jk_openings` (`open_id`, `open_day`, `open_from`, `open_to`, `kiosk_id`) VALUES
(1, 1, 8:00, 20:00, 1),
(2, 2, 8:00, 22:00, 1),
(3, 3, 8:00, 20:00, 1),
(4, 4, 8:00, 22:00, 1),
(5, 5, 8:00, 20:00, 1),
(6, 6, 8:00, 22:00, 1),
(7, 7, 8:00, 20:00, 1),
(8, 1, 8:00, 20:01, 2),
(9, 2, 8:00, 20:02, 2),
(10, 3, 8:00, 20:03, 2),
(11, 4, 8:00, 20:04, 2),
(12, 5, 8:00, 20:05, 2),
(13, 6, 8:00, 20:06, 2),
(14, 7, 8:00, 0:0, 2);

Og når man smider ind, skal man så angive 8:00 som 08:00 ?

Showsource: Jeg ønsker udelukkende at gemme time+minut ... ikke dag, måned, år, sekund, milisekund eller lign...

Tak fordi i tager jer tid til at besvarer!
Avatar billede showsource Seniormester
10. april 2007 - 11:37 #9
Hov, ja, nu fandt jeg den sgu, altså muligheden for TIME() :O)
Men får den nu ikke lige til at kun at gemme timer og minutter. ??? (sekunder vil gerne med)
Avatar billede nixir Nybegynder
10. april 2007 - 12:03 #10
Først lidt links:
Documentation:
http://dev.mysql.com/doc/refman/5.0/en/time.html
En der forsøgte med samme TIME (HH:MM):
http://en.wikibooks.org/wiki/MySQL/CheatSheet

Jeg forstod ikke helt dokumentationen, men der stod noget om at man kan benytte forskellige formater - men hvordan man opretter tabellen med et bestemt format ved jeg ikke hvordan man gør - og om det overhoved er korrekt det jeg har forsøgt, men det bliver underbygget i den der wikibook jeg sendte link til.

Men jeg ved mindre end dig om mysql, så hvis du har andre erfaringer eller lign, vil jeg meget gerne hører!!

Mvh.
Avatar billede nixir Nybegynder
10. april 2007 - 16:40 #11
coldgate ... smider du ikke lige et svar? Brugte det du skrev, så du må hellere få nogle point ! :)
Avatar billede nixir Nybegynder
14. april 2007 - 19:46 #12
Coldgate >>> Er du venlig at smide et svar?
Avatar billede Slettet bruger
15. april 2007 - 11:19 #13
ja tak
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