Avatar billede mtrolle Nybegynder
20. september 2003 - 23:35 Der er 9 kommentarer og
1 løsning

unix_timestamp i mysql

Hejsa!

Burde det ikke kunne lade sig gøre?
$time = time();
$res = mysql_query("SELECT * FROM `dagens_programmer` WHERE UNIX_TIMESTAMP(tid) < '" . $time . "' AND UNIX_TIMESTAMP(end_tid) >= '" . $time . $and . "' ORDER BY kanal")

eller rettere: hvordan får jeg det til at virke, for det virker ikke korrekt!
Kræver det virkelig at jeg gemmer det i databasen som unix timestamp for at kunne lave en søgning ala denne???

Problemet er, at når kl. er 0.00 og et felt i databasen fx ser således ud:
tid: 22.30
end_tid: 0.10
vil den ikke finde det som resultat, da den ikke kan finde ud af klokken :) Men hvis jeg nu kunne få det lavet om til sekund som jeg prøver er problemet løst...
Avatar billede jakoba Nybegynder
20. september 2003 - 23:51 #1
et unix timestamp er klokkeslet PLUS dato, ikke klokkeslet alene.

Jeg vil anbefale at du kikke på mysql's eget datetime format og gemmer dine tider på den måde. så kan du benytte alle de indbyggede mysql funktioner til at kikke på tiden.

se: http://www.mysql.com/doc/en/DATETIME.html
Avatar billede mtrolle Nybegynder
20. september 2003 - 23:52 #2
jeg bruger datetime formatet ;) Det virker ikke!
Avatar billede jakoba Nybegynder
20. september 2003 - 23:56 #3
I tabelfelterne  'tid'  og  'end_tid'  ???  det har jeg svært ved at tro på.
Avatar billede mtrolle Nybegynder
20. september 2003 - 23:59 #4
Hvorfor tror du mig ikke?
Det har jeg og jeg er 100% sikker, da jeg har knoklet løs med det her hele dagen og har knoket frem og tilbage med netop den database...

datetime har formattet "yyyy-mm-dd hh:mm:ss" og bliver også lagret således, men når jeg søger virker det ikke med UNIX_TIMESTAMP(tid)...
Avatar billede mtrolle Nybegynder
21. september 2003 - 00:19 #5
hvis jeg skriver:
SELECT *, UNIX_TIMESTAMP(tid) as time FROM bla bla bla
Så bliver time til unix timestamp...

Så kan man ikke lave et "falsk" felt i databasen under søgningen, som fx
$result = mysql_query("SELECT *, UNIX_TIMESTAMP(tid) as time_start, UNIX_TIMESTAMP(end_tid) as end_time FROM `dagens_programmer` WHERE time_start < '" . $time . "' AND time_end >= '" . $time . $and . "' ORDER BY kanal");

Jeg har forsøgt ovenstående eksempel, men kan man ikke lave det på en anden måde?
Avatar billede mtrolle Nybegynder
21. september 2003 - 01:02 #6
Det er mig der har dummet mig...
I databasen skriver jeg tiden til den dato jeg har lagt dataen ind i.
Altså dataen bliver gemt om morgenen og vil derfor hedder fx d. 20 kl. 1:20 hvilket jo rigtigt er d. 21 kl. 1:20... Derfor virker det ikke...
Avatar billede tipsen Nybegynder
22. september 2003 - 10:14 #7
hehe :-) ("Hvorfor tror du mig ikke?")
Avatar billede mtrolle Nybegynder
22. september 2003 - 12:59 #8
så så så, ikke mobbe mig :)
Avatar billede jakoba Nybegynder
22. september 2003 - 13:46 #9
dvs du lod den defaultudfylde datoen og glemte at computeren ikke kunne vide du mente 'imorgen' på den tid af natten.
Bemærk, jeg griner ikke.  ( Pftt..tt..tt :-))

mvh JakobA
Avatar billede mtrolle Nybegynder
22. september 2003 - 13:54 #10
Nej, jeg udfylde den med dato ala: date(Y . '-' . m . '-' . d) + tiden, men tog ikke højde for, at datoen skulle skifte efter kl. 0.00 for at kunne lave et korrekt unix timestamp :)
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