sql >> Databáze >  >> RDS >> Mysql

Příklady SUBDATE() – MySQL

V MySQL můžete použít SUBDATE() funkce pro odečtení určitého času od data. Můžete jej například použít k odečtení 10 dnů od daného data. Můžete určit, zda se mají odečítat dny, týdny, měsíce, čtvrtletí, roky atd. Můžete také odečíst časovou hodnotu, jako jsou sekundy, mikrosekundy atd.

Při použití první syntaxe uvedené níže, SUBDATE() funkce je synonymem pro DATE_SUB() funkce (podobně jako ADDDATE() je synonymem pro DATE_ADD() při použití stejné syntaxe).

Syntaxe

Tuto funkci můžete použít dvěma následujícími způsoby:

SUBDATE(date,INTERVAL expr unit)

Nebo

SUBDATE(expr,days)

Příklad 1 – První syntaxe

Zde je příklad použití první formy syntaxe.

SELECT SUBDATE('2018-05-10', INTERVAL 2 DAY) AS Result;

Výsledek:

+------------+
| Result     |
+------------+
| 2018-05-08 |
+------------+

Tento příklad odečte 2 dny od data poskytnutého prvním argumentem.

Příklad 2 – Druhá syntaxe

Tento příklad by mohl být přepsán následovně:

SELECT SUBDATE('2018-05-10', 2) AS Result;

Výsledek:

+------------+
| Result     |
+------------+
| 2018-05-08 |
+------------+

Toto používá druhou formu syntaxe. Druhý argument je celé číslo, které představuje, kolik dní by se mělo odečíst od data poskytnutého prvním argumentem.

Jak již bylo zmíněno, SUBDATE() je synonymem pro DATE_SUB() , ale pouze při použití první syntaxe. Druhá syntaxe je dostupná pouze v SUBDATE() .

Příklad 3 – Jiné jednotky data

Jednou z výhod první formy syntaxe je, že můžete určit, zda se mají odečítat dny, týdny, měsíce, roky atd. Zde je několik příkladů.

SELECT 
    '2018-05-10' AS 'Start Date',
    SUBDATE('2018-05-10', INTERVAL 2 WEEK) AS '-2 Weeks',
    SUBDATE('2018-05-10', INTERVAL 2 MONTH) AS '-2 Months',
    SUBDATE('2018-05-10', INTERVAL 2 QUARTER) AS '-2 Quarters',
    SUBDATE('2018-05-10', INTERVAL 2 YEAR) AS '-2 Years';

Výsledek:

+------------+------------+------------+-------------+------------+
| Start Date | -2 Weeks   | -2 Months  | -2 Quarters | -2 Years   |
+------------+------------+------------+-------------+------------+
| 2018-05-10 | 2018-04-26 | 2018-03-10 | 2017-11-10  | 2016-05-10 |
+------------+------------+------------+-------------+------------+

Příklad 4 – Časové jednotky

Můžete také použít SUBDATE() k odečtení časových jednotek od hodnoty data/času. Zde je příklad.

SELECT SUBDATE('2018-05-10 01:00:00', INTERVAL 2 HOUR) AS Result;

Výsledek:

+---------------------+
| Result              |
+---------------------+
| 2018-05-09 23:00:00 |
+---------------------+

Očekávané hodnoty

Následující tabulka ukazuje platné hodnoty jednotek a jejich očekávaný formát.

unit Hodnota Očekáváno expr Formát
MIKROSECOND MIKROSEKUNDY
DRUHÁ SEKUND
MINUTE MINUTY
HODINA HODINY
DEN DNY
WEEK WEEKS
MĚSÍC MĚSÍCE
ČTVRTLETÍ ČTVRTLETÍ
ROK ROKY
SECOND_MICROSECOND „SECONDS.MICROSECONDS“
MINUTE_MICROSECOND „MINUTY:SECONDS.MICROSECONDS“
MINUTE_SECOND „MINUTY:SECONDS“
HOUR_MICROSECOND 'HOURS:MINUTES:SECONDS.MICROSECONDS'
HOUR_SECOND „HOURS:MINUTES:SECONDS“
HOUR_MINUTE „HOURS:MINUTES“
DAY_MICROSECOND 'DAYS HOURS:MINUTES:SECONDS.MICROSECONDS'
DAY_SECOND „DAYS HOURS:MINUTES:SECONDS“
DAY_MINUTE „DAYS HOURS:MINUTES“
DAY_HOUR „DAYS HOURS“
YEAR_MONTH „ROKY-MĚSÍCE“

  1. Ukončení nečinných připojení mysql

  2. Jak mohu zadat jedinečné omezení pro více sloupců v MySQL?

  3. Proč SQL Server typ DATETIME šetří čas v krocích 1/300 sekundy?

  4. Podívejte se na mou prezentaci „Optimalizace Microsoft Access pomocí SQL Serveru“.