HaKj Skrevet 17. august 2015 Del Skrevet 17. august 2015 Hei Jeg har et view som ser ca. slik ut: Dato, klokkeslett, taler og sanger på 10 neste møtene: select dato as Dato, klokke as Klokkeslett, tm.motetype as Type, taler as Taler,sanger as Sanger from hoved h inner join typemote tm on h.type = tm.typeid where h.dato >= DATE(NOW()) order by h.dato asc limit 10 Dette henter data fra en tabell i mysql som heter oversikt. I denne tabellen ligger alle møtene fremover. Dette viewet lister de neste 10 møtene. Dette viewet lister opp dataene ut fra dagens dato. Jeg viser dette i en tabell på en wordpresswebside til denne foreningen. Det ser ut til at dette viewet ikke blir oppdatert i mysql uten at det legges inn, eller endres data i tabellen. Hvordan får jeg dette viewet til å bli oppdatert hver dag, uten at det legges inn data i tabellen? Hilsen Harald Lenke til kommentar
HaKj Skrevet 21. august 2015 Forfatter Del Skrevet 21. august 2015 Fant ut av det. Det var serveren til webhotellet som er i en annen tidssone. USA 8 timer etter oss, slik at datoen ikke skifter før kl. 8 i Norge. Da må jeg vel legge inn en DATE_SUB eller noe lignende? Lenke til kommentar
Crowly Skrevet 22. august 2015 Del Skrevet 22. august 2015 Er vel DATE_ADD siden vi ligger foran, slik at kl 16 deres tid blir 24 her. WHERE h.dato >= DATE( DATE_ADD( NOW(), INTERVAL 8 HOUR )) Lenke til kommentar
HaKj Skrevet 30. oktober 2017 Forfatter Del Skrevet 30. oktober 2017 Hei Jeg fant ut at jeg kunne endre php.ini på serveren, slik at den ble stilt inn på vår tidssone. Da fungerer det bra. Et annet problem jeg har er at når jeg har to møter på samme dag, f.eks 17:00 og 19:00, ønsker jeg at når klokka blir mer enn 17:00 så skal det møtet forsvinne fra lista. Hvordan filtrerer jeg meg frem til det? Har sett at det går an å kombinere to kolonner (date og time) til en datetime kolonne. Er løsningen å gjøre dette, og så filtrere med NOW? Lenke til kommentar
Crowly Skrevet 30. oktober 2017 Del Skrevet 30. oktober 2017 (endret) Har sett at det går an å kombinere to kolonner (date og time) til en datetime kolonne. Er løsningen å gjøre dette, og så filtrere med NOW? Det er ikke nødvendig å ha to kolonner som er DATE og TIME hver for seg, er nok med en DATETIME kolonne. Så er det bare å formatere (se DATE_FORMAT(), DATE(), MONTH(), YEAR() osv) den i forhold til om du kun vil ha date, time eller begge deler. Du kan fint sjekke mot NOW(), f.eks. (kolonneX er en DATETIME) WHERE `kolonneX` > NOW() vil ignorerer alle rader som er eldre enn nå. Vil du sjekke på kun dato kan du f.eks. gjøre WHERE DATE(`kolonneX`) > DATE(NOW()) Endret 30. oktober 2017 av Crowly Lenke til kommentar
HaKj Skrevet 31. oktober 2017 Forfatter Del Skrevet 31. oktober 2017 Har sett at det går an å kombinere to kolonner (date og time) til en datetime kolonne. Er løsningen å gjøre dette, og så filtrere med NOW? Det er ikke nødvendig å ha to kolonner som er DATE og TIME hver for seg, er nok med en DATETIME kolonne. Så er det bare å formatere (se DATE_FORMAT(), DATE(), MONTH(), YEAR() osv) den i forhold til om du kun vil ha date, time eller begge deler. Du kan fint sjekke mot NOW(), f.eks. (kolonneX er en DATETIME) WHERE `kolonneX` > NOW() vil ignorerer alle rader som er eldre enn nå. Vil du sjekke på kun dato kan du f.eks. gjøre WHERE DATE(`kolonneX`) > DATE(NOW()) Jeg har to eksisterende kolonner hvor jeg bruker en GUI på en nettside for å administrere dette. Dette fungerer bra og brukerne er fornøyd, så jeg ønsker ikke å endre dette. Her legges det inn Dato i en kolonne og klokkeslett i neste. Jeg ønsker å fortsette med denne løsningen. Jeg ønsker å bruke dataene fra tabellen videre på en annen side for å lage en infoskjerm som viser arrangementer. Problemet mitt er at hvis jeg filterer på dato, vil det kun bli oppdaert ved datoskifte, mens jeg ønsker å filtrere etter tid også. Er det da mulig å legge inn en kalkulert kolonne som kombinerer dato og klokke til en datetime kolonne i mysql? Lenke til kommentar
Crowly Skrevet 31. oktober 2017 Del Skrevet 31. oktober 2017 F.eks. WHERE CONCAT(dato, ' ', tid) > NOW()Selv om det i GUI er ett felt for dato og ett felt for tid, så behøver du ikke ha det slik i databasen. Er bedre å ha en datetime kolonne, og så formaterer du denne etter behov på output, og slå sammen dato og tid når du oppretter en ny rad eller oppdaterer en eksisterende. Med php gjør du noe ala dette: // ut // $result->startTime er fra en database spørring, tar ikke med all kode her $start = new DateTime($result->startTime); echo '<input type="text" name="dato" value="' . $start->format('d.m.Y') . '"/>'; echo '<input type="text" name="tid" value="' . $start->format('H:i') . '"/>'; // inn $date = filter_input(INPUT_POST, 'dato', FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_LOW); $time = filter_input(INPUT_POST, 'tid', FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_LOW); $dateTime = new DateTime($date . ' ' . $time); // ikke komplett kode for mysqli $statement = $mysqli->prepare("UPDATE tabell SET start = ? WHERE ...."; $statement->bind_param("s", $dateTime->format('Y-m-d H:i:s'); $statement->execute(); Lenke til kommentar
quantum Skrevet 2. november 2017 Del Skrevet 2. november 2017 Selv om det i GUI er ett felt for dato og ett felt for tid, så behøver du ikke ha det slik i databasen. Ja, det blir jo litt som å ha en for kroner og en for øre. Knotete å summere sammen på den måten ... Lenke til kommentar
HaKj Skrevet 6. november 2017 Forfatter Del Skrevet 6. november 2017 Jeg bruker en GUI som heter Dadabik, og denne fungerer bra som admin tabell. Jeg prøver å lage en webside som viser en tabell med kommende arrangementer uavhengig av denne admin GUI en Jeg prøvde følgende spørring i Mysql: select STR_TO_DATE(CONCAT(dato, ' ', klokke), '%Y-%m-%d %H:%i:%s') as datotid from hoved WHERE datotid >= DATE( DATE_ADD( NOW(), INTERVAL 8 HOUR )) Problemet er at den ikke kjenner igjen datotid som en kolonne. Lenke til kommentar
Crowly Skrevet 7. november 2017 Del Skrevet 7. november 2017 (endret) Du kan ikke bruke datotid i where delen, den finnes ikke enda, kun faktiske tabell felt. SELECT STR_TO_DATE(CONCAT(dato, ' ', klokke), '%Y-%m-%d %H:%i:%s') as datotid FROM hoved WHERE STR_TO_DATE(CONCAT(dato, ' ', klokke), '%Y-%m-%d') >= DATE( DATE_ADD( NOW(), INTERVAL 8 HOUR )) Her ser man fordelen med å ha det lagret i ett DateTime felt i stedet for slik du har det nå, da hadde du kommet unna med SELECT datotid FROM hoved WHERE DATE(datotid) >= DATE( DATE_ADD( NOW(), INTERVAL 8 HOUR )) Endret 7. november 2017 av Crowly Lenke til kommentar
HaKj Skrevet 11. november 2017 Forfatter Del Skrevet 11. november 2017 Du kan ikke bruke datotid i where delen, den finnes ikke enda, kun faktiske tabell felt. SELECT STR_TO_DATE(CONCAT(dato, ' ', klokke), '%Y-%m-%d %H:%i:%s') as datotid FROM hoved WHERE STR_TO_DATE(CONCAT(dato, ' ', klokke), '%Y-%m-%d') >= DATE( DATE_ADD( NOW(), INTERVAL 8 HOUR )) Her ser man fordelen med å ha det lagret i ett DateTime felt i stedet for slik du har det nå, da hadde du kommet unna med SELECT datotid FROM hoved WHERE DATE(datotid) >= DATE( DATE_ADD( NOW(), INTERVAL 8 HOUR )) Jeg gjorde en test nå, men jeg får det ikke helt til. Jeg har en kolonne "datotid", som er et datetime felt. og prøvde denne spørringen: SELECT datotid FROM hoved WHERE DATE(datotid) >= DATE( DATE_ADD( NOW(), INTERVAL 8 HOUR )) Jeg har flere møter på samme dato i tabellen, kl 9 kl 12 og kl 15, men når klokken er 11 her, tar den også med seg møtet som er klokken 9 i denne spørringen. Det virker som den ikke tar hensyn til klokkeslettet, men kun datoen. Noen tips? Lenke til kommentar
Crowly Skrevet 11. november 2017 Del Skrevet 11. november 2017 Det virker som den ikke tar hensyn til klokkeslettet, men kun datoen. Noen tips?Ja, du ber den kun å sammenligne på kun dato med DATE() Hvis datotid = 2017-11-10 11:15:00 og NOW() + 8 timer = 2017-11-10 20:00:00 så blir sql'en sendende slikt ut DATE(datotid) >= DATE( DATE_ADD( NOW(), INTERVAL 8 HOUR )) -- 2017-11-10 00:00:00 >= 2017-11-10 00:00:00 DATE() er en nyttig funksjon, men ikke her. Lenke til kommentar
HaKj Skrevet 11. november 2017 Forfatter Del Skrevet 11. november 2017 Hvordan kan jeg da spørre for å få den til å sortere etter klokkelsett også? Lenke til kommentar
HaKj Skrevet 11. november 2017 Forfatter Del Skrevet 11. november 2017 Dette fungerte visst: WHERE DATOTID >= DATE_ADD(NOW(), INTERVAL 8 HOUR) Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå