Avatar billede kane Juniormester
06. oktober 2020 - 10:51 Der er 6 kommentarer og
1 løsning

dato og tid

Hej jeg har en sms reminder, som sender en sms til dem der har en opgave samme dag.
where dato = DATE_ADD(CURDATE(), INTERVAL +0 day)";   
Den virker fint.

nu vil jeg gerne sende en sms til dem der har en opgave inden for den næste time, på datoen.
   
jeg har prøvet flere ting, men virker ikke.

SELECT * FROM `opgaver` where dato = DATE_ADD(CURDATE(), INTERVAL +0 day) and  Klokken = DATE_ADD(CURTIME(), INTERVAL +1 hour)
Er der nogle der har lidt hjælp.
Avatar billede erikjacobsen Ekspert
06. oktober 2020 - 11:43 #1
Du skal nok ikke skrive et lighedstegn - så skal der stå f.ekx. 12:33:44 i dit felt med "klokken".

Du mener måske <  - altså dem der ligger indenfor den næste times tid.

Og så får du et problem omkring midnat ...
Avatar billede jakobdo Ekspert
06. oktober 2020 - 13:11 #2
Skal du ikke lave noget ala:

SELECT * FROM opgaver WHERE dato BETWEEN NOW() AND DATE_ADD(NOW(), INTERVAL 1 HOUR)
Avatar billede erikjacobsen Ekspert
06. oktober 2020 - 13:28 #3
#2 - jeg gætter, men det ser ud til at dato og tid opbevares i hvert sit felt.
Avatar billede jakobdo Ekspert
06. oktober 2020 - 14:51 #4
#3 Det lugter af dårligt design. Men ja, så skal sql'en tilpasses. :)

Så må det være noget ala:

SELECT * FROM opgaver WHERE dato = CURDATE() AND Klokken BETWEEN CURTIME() AND DATE_ADD(CURTIME(), INTERVAL 1 HOUR)
Avatar billede kane Juniormester
06. oktober 2020 - 15:25 #5
rigtigt, de er i hvert deres felt. en beboerforening som vælger dato, starttid - sluttid og hvem der skal udføre opgaven.
Kan ikke rigtigt se hvordan jeg skulle opfange det i et felt. men nm det, det er ok du syntes det er dårligt design.

jeg køre et cron job, hver dag kl 7, så de der har en opgave på dagen får en sms.
Men nu ville de også gerne have en ca en time før.
så jeg ville køre et cron 1 minut over 8, 9, 10, ect ect  så dem der har en opgave kl 14 feks, får en sms kl 13.01.
nu snakkes der om between, men gør interval +1 hour ikke det samme?
Avatar billede jakobdo Ekspert
06. oktober 2020 - 15:48 #6
Interval gør at du kan tilføje/fratrække "units" på en dato/datotid.
Så hvis vi siger klokken nu er:

15:46, så vil DATE_ADD(CURTIME(), INTERVAL 1 HOUR) give tiden 16:46.
Og du er jo netop interesseret i at finde de opgaver der starter mellem NU og om 1 time.

Så du vil gerne have opgaverne der opfylder:

dato = CURDATE() // Opgaver der matcher I DAG
AND
starttid BETWEEN CURTIME() AND DATE_ADD(CURTIME(), INTERVAL 1 HOUR).
Avatar billede kane Juniormester
06. oktober 2020 - 15:57 #7
jeg takker og bukker jakobdo ;)
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

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