I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Du kan lave en hjælpetabel, hvor du indtaster tallene fra 1 til 366. Når du så har den, kan du finde datoen sådan her (tror jeg nok, har ikke mulighed for at teste det):
SELECT DATE_ADD(DATE_SUB(CURDATE(), DAYOFYEAR(CURDATE()), Dag) FROM Dage WHERE WEEK(DATE_ADD(DATE_SUB(CURDATE(), DAYOFYEAR(CURDATE()), Dag), 1) = 31 AND WEEKDAY(DATE_ADD(DATE_SUB(CURDATE(), DAYOFYEAR(CURDATE()), Dag)) = 4
Det burde give dig den korrekte dato (jeg kan som sagt ikke teste det).
Hvordan kan du så bruge det til at udvælge en dato i andre tabeller? Det kan du med en cross join. Lad os antage, at du har en har registreret nogen ordrer til levering på bestemte dage:
SELECT o.* FROM ORDRER o CROSS JOIN Datoer d WHERE o.Leveringsdato = DATE_ADD(DATE_SUB(CURDATE(), DAYOFYEAR(CURDATE()), d.Dag) AND WEEK(DATE_ADD(DATE_SUB(CURDATE(), DAYOFYEAR(CURDATE()), d.Dag), 1) = 31 AND WEEKDAY(DATE_ADD(DATE_SUB(CURDATE(), DAYOFYEAR(CURDATE()), d.Dag)) = 4
Du kan lave en hjælpetabel, hvor du indtaster tallene fra 1 til 366. Når du så har den, kan du finde datoen sådan her (tror jeg nok, har ikke mulighed for at teste det):
SELECT DATE_ADD(DATE_SUB(CURDATE(), INTERVAL DAYOFYEAR(CURDATE()) DAYS), INTERVAL Dag DAYS) FROM Dage WHERE WEEK(DATE_ADD(DATE_SUB(CURDATE(), INTERVAL DAYOFYEAR(CURDATE()) DAYS), INTERVAL Dag DAYS), 1) = 31 AND WEEKDAY(DATE_ADD(DATE_SUB(CURDATE(), INTERVAL DAYOFYEAR(CURDATE()) DAYS), INTERVAL Dag DAYS)) = 4
Det burde give dig den korrekte dato (jeg kan som sagt ikke teste det).
Hvordan kan du så bruge det til at udvælge en dato i andre tabeller? Det kan du med en cross join. Lad os antage, at du har en har registreret nogen ordrer til levering på bestemte dage:
SELECT o.* FROM ORDRER o CROSS JOIN Datoer d WHERE o.Leveringsdato = DATE_ADD(DATE_SUB(CURDATE(), INTERVAL DAYOFYEAR(CURDATE()) DAYS), INTERVAL d.Dag DAYS) AND WEEK(DATE_ADD(DATE_SUB(CURDATE(), INTERVAL DAYOFYEAR(CURDATE()) DAYS), INTERVAL d.Dag DAYS), 1) = 31 AND WEEKDAY(DATE_ADD(DATE_SUB(CURDATE(), INTEVAL DAYOFYEAR(CURDATE()) DAYS), INTERVAL d.Dag DAYS)) = 4
Jeg fandt ud af det med SELECT * FROM tabel WHERE WEEKOFYEAR(tabel.TimeStamp) = 31 AND DAYOFWEEK(tabel.TimeStamp) = 4 AND YEAR(tabel.TimeStamp) = YEAR(NOW())
Okay, men det var nu ikke det du spurgte om i dit spørgsmål. Der ville du så vidt jeg forstår spørgsmålet have returneret datoen svarende til ugenummer og ugedag.
Synes godt om
Ny brugerNybegynder
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.