Většina hlavních RDBMS má funkce, které nám umožňují extrahovat den, měsíc a rok z hodnot datetime.
Některé RDBMS poskytují více způsobů, jak toho dosáhnout, a jiné jsou omezenější. Níže jsou uvedeny příklady extrahování dne, měsíce a roku z hodnot data v některých z nejpopulárnějších RDBMS.
MySQL
MySQL má několik funkcí, které lze použít k extrahování dne, měsíce a roku z data. Jedním z nich je EXTRACT() funkce:
SELECT
EXTRACT(DAY FROM '2035-12-19') AS Day,
EXTRACT(MONTH FROM '2035-12-19') AS Month,
EXTRACT(YEAR FROM '2035-12-19') AS Year; Výsledek:
+------+-------+------+ | Day | Month | Year | +------+-------+------+ | 19 | 12 | 2035 | +------+-------+------+
V tomto případě jsem extrahoval každou část data do vlastního pole.
Pokud chcete, aby byly všechny části data vráceny ve stejném poli, DATE_FORMAT() funkce to může udělat za vás.
MySQL má také spoustu funkcí, které vracejí konkrétní části data z data, jako je DAY() , MONTH() , YEAR() , atd.
Další příklady naleznete v tématu Návrat dne, měsíce a roku v MySQL.
Oracle
Oracle má TO_CHAR() funkce, kterou lze použít k extrahování částí data v jejich vlastních polích nebo všech v jednom poli. Zde je příklad jejich vrácení v jednotlivých polích:
SELECT
TO_CHAR(DATE '2035-09-26', 'Day') AS Day,
TO_CHAR(DATE '2035-09-26', 'DD') AS DD,
TO_CHAR(DATE '2035-09-26', 'Month') AS Month,
TO_CHAR(DATE '2035-09-26', 'YYYY') AS Year
FROM DUAL; Výsledek:
DAY DD MONTH YEAR ____________ _____ ____________ _______ Wednesday 26 September 2035
Seznam prvků formátu, které lze použít k formátování hodnot datetime pomocí této funkce, najdete v tomto Úplném seznamu prvků formátu Datetime v Oracle.
Oracle má také EXTRACT() funkce, která funguje jako stejnojmenná funkce MySQL.
SQL Server
SQL Server má poměrně širokou škálu funkcí, které mohou vrátit části data, jako je den, měsíc a rok.
DATEPART() funkce je navržena speciálně pro vrácení specifikovaných částí data:
DECLARE @date date = '2045-07-03';
SELECT
DATEPART(day, @date) AS DAY,
DATEPART(weekday, @date) AS WEEKDAY,
DATEPART(month, @date) AS MONTH,
DATEPART(year, @date) AS YEAR; Výsledek:
+-------+-----------+---------+--------+ | DAY | WEEKDAY | MONTH | YEAR | |-------+-----------+---------+--------| | 3 | 2 | 7 | 2045 | +-------+-----------+---------+--------+
Podobná funkce je DATENAME() , který může vrátit názvy dnů a měsíců jako řetězec.
SQL Server má také funkce jako DAY() , MONTH() , YEAR() , atd., které vracejí konkrétní část data.
A nesmíme zapomenout na FORMAT() funkce, která je perfektní, pokud chcete vrátit všechny části data ve stejném poli.
Další příklady viz 6 funkcí pro získání dne, měsíce a roku z data na serveru SQL.
PostgreSQL
PostgreSQL má několik funkcí, které mohou vrátit části data z dat.
Zde je příklad DATE_PART() funkce:
SELECT
DATE_PART('DAY', date '2035-10-30') AS "Day",
DATE_PART('DOW', date '2035-10-30') AS "DOW",
DATE_PART('DOY', date '2035-10-30') AS "DOY",
DATE_PART('MONTH', date '2035-10-30') AS "Month",
DATE_PART('YEAR', date '2035-10-30') AS "Year"; Výsledek:
Day | DOW | DOY | Month | Year -----+-----+-----+-------+------ 30 | 2 | 303 | 10 | 2035
PostgreSQL má také EXTRACT() funkce, která v podstatě dělá totéž, až na trochu jinou syntaxi.
A TO_CHAR() funkci lze použít, pokud chcete vrátit více částí data ve stejném poli.
SQLite
SQLite je omezenější, pokud jde o funkce data a času. Stále však můžete použít STRFTIME() funkce pro extrahování dne, měsíce a roku z data:
SELECT STRFTIME('%d %m %Y', '2035-12-01'); Výsledek:
01 12 2035
V tomto příkladu jsem vrátil všechny části data ve stejném poli. Ale to není nezbytně nutné. Pokud je chcete vrátit v různých polích, můžete zavolat STRFTIME() vícekrát, každý s jiným prvkem formátu:
SELECT
strftime('%d', '2035-12-01') AS "Day",
strftime('%m', '2035-12-01') AS "Month",
strftime('%Y', '2035-12-01') AS "Year"; Výsledek:
Day Month Year --- ----- ---- 01 12 2035
MariaDB
MariaDB poskytuje velký výběr funkcí, které mohou vrátit den, měsíc a rok z hodnoty datetime.
Zde je příklad DATE_FORMAT() funkce:
SELECT DATE_FORMAT('2023-07-25', '%W, %D %M %Y'); Výsledek:
+-------------------------------------------+
| DATE_FORMAT('2023-07-25', '%W, %D %M %Y') |
+-------------------------------------------+
| Tuesday, 25th July 2023 |
+-------------------------------------------+
Tato funkce nám umožňuje vrátit všechny části data v jednom poli (ačkoli to není povinné – stejně snadno můžete vrátit každou část data v jiném poli voláním DATE_FORMAT() vícekrát, pokaždé s jiným formátovacím řetězcem).
A stejně jako některé další má MariaDB také EXTRACT() funkce, která extrahuje danou část data.
A existuje také velký rozsah specifických funkcí pro každou část data, například DAY() , MONTH() , YEAR() , atd
Úplný přehled najdete v 11 funkcích pro získání dne, měsíce a roku z data v MariaDB.