MySQL:ssä voit käyttää DATE_SUB()
-funktiota, jolla voit vähentää päivämääristä tietyn ajanjakson. Voit esimerkiksi käyttää sitä vähentämään 7 päivää tietystä päivämäärästä. Voit määrittää, vähennetäänkö päiviä, viikkoja, kuukausia, neljännesvuosia, vuosia jne. Voit myös vähentää aika-arvon, kuten sekunnit, mikrosekunnit jne.
Tämä funktio on samanlainen kuin DATE_ADD()
, paitsi että se vähentää päivämäärästä eikä lisää siihen.
Syntaksi
Syntaksi menee näin:
DATE_SUB(date,INTERVAL expr unit)
Esimerkki 1 – Peruskäyttö
Tässä on esimerkki käytöstä.
SELECT DATE_SUB('2021-05-07', INTERVAL 5 DAY) AS Result;
Tulos:
+------------+| Result |+------------+| 2021-05-02 |+------------+
Tässä esimerkissä ensimmäisellä argumentilla annetusta päivämäärästä vähennetään 5 päivää.
Esimerkki 2 – Muut päivämääräyksiköt
Voit määrittää yksiköt päivinä, viikkoina, kuukausina, vuosina jne. Tässä muutamia esimerkkejä.
SELECT '2021-05-07' AS 'Start Date', DATE_SUB('2021-05-07', INTERVAL 2 WEEK) AS '-2 Weeks', DATE_SUB('2021-05-07', INTERVAL 2 MONTH) AS '-2 Months', DATE_SUB('2021-05-07', INTERVAL 2 QUARTER) AS '-2 Quarters', DATE_SUB('2021-05-07', INTERVAL 2 YEAR) AS '-2 Years';
Tulos:
+------------+------------+------------+-------------+------------+| Start Date | -2 Weeks | -2 Months | -2 Quarters | -2 Years |+------------+------------+------------+-------------+------------+| 2021-05-07 | 2021-04-23 | 2021-03-07 | 2020-11-07 | 2019-05-07 |+------------+------------+------------+-------------+------------+
Esimerkki 3 – Aikayksiköt
Voit myös vähentää päivämäärä-/aika-arvosta aikayksiköt. Tässä on esimerkki.
SELECT DATE_SUB('2021-05-07 10:00:00', INTERVAL 5 HOUR) AS Result;
Tulos:
+---------------------+| Result |+---------------------+| 2021-05-07 05:00:00 |+---------------------+
Ja voit määrittää useita yksiköitä samanaikaisesti. Voit esimerkiksi määrittää tunnit ja minuutit. Näin:
SELECT DATE_SUB('2021-05-07 10:00:00', INTERVAL '1:30' HOUR_MINUTE) AS Result;
Tulos:
+---------------------+| Result |+---------------------+| 2021-05-07 08:30:00 |+---------------------+
Odotetut arvot
Seuraavassa taulukossa esitetään kelvolliset yksikköarvot ja niiden odotettu muoto.
unit Arvo |
Odotettu expr Formaatti |
|
---|---|---|
MIKROSEKUNTI | MIKROSEKUNTI | |
SEKUNTI | SEKUNTIA | |
MINUUTTI | MINUUTTEJA | |
TUNTI | TUNTIA | TUNTEJA |
PÄIVÄ | PÄIVÄT | |
VIIKKO | VIIKOT | |
KUUKAUSI | KUUKAUDET | KUUKAUDET |
NELJÄNNES | NELJÄNNEKSET | |
VUOSI | VUODET | |
SEKUNTI_MIKROSEKUNTI | ’SEKUNNIT.MIKROSEKUNNIT’ | |
MINUUTTI_MIKROSEKUNTI | ’MINUUTIT:SEKUNNIT.MIKROSEKUNNIT’ | |
MINUUTTI_MIKROSEKUNTI | ’MINUUTIT:SEKUNNIT’ | |
TUNTI_MIKROSEKUNTI | ’TUNNIT:MINUUTIT:SEKUNNIT.MIKROSEKUNNIT’ | |
TUNTI_MINUUTTI | ’TUNNIT:MINUUTIT:SEKUNNIT’ | |
TUNTI_MINUUTTI | ’TUNNIT:MINUUTIT’ | |
PÄIVÄ_MIKROSEKUNTI | ’PÄIVÄT TUNNIT:MINUUTIT:SEKUNNIT.MIKROSEKUNNIT’ | |
PÄIVÄ_SEKUNTI | ’PÄIVÄT TUNNIT:MINUUTIT:SEKUNNIT’ | |
PÄIVÄ_MINUUTTI | ’PÄIVÄT TUNNIT:MINUUTIT’ | |
PÄIVÄ_TUNTI | ’PÄIVÄT TUNNIT’ | |
VUOSI_KUUKAUSI | ’VUODET-MONTHS’ |
Voit myös käyttää SUBDATE()
-funktiota saman asian tekemiseen (se on synonyymi DATE_SUB()
-funktiolle, kun käytetään samaa syntaksia).
Lisäksi SUBDATE()
-syntaksilla on toinen muoto, joka on lyhennetty tapa vähentää päivämäärästä tietty määrä päiviä. Lisätietoja on kohdassa SUBDATE()-esimerkkejä MySQL:ssä.