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.