Повечето от основните RDBMS имат функции, които ни позволяват да извличаме деня, месеца и годината от стойностите за дата и час.
Някои RDBMS предоставят множество начини за това, а други са по-ограничени. По-долу са дадени примери за извличане на ден, месец и година от стойности за дата в някои от най-популярните RDBMS.
MySQL
MySQL има няколко функции, които могат да се използват за извличане на ден, месец и година от дата. Един от тях е EXTRACT()
функция:
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;
Резултат:
+------+-------+------+| Ден | Месец | Година |+------+-------+-----+| 19 | 12 | 2035 |+------+-------+------+
В този случай извадих всяка част от датата в собственото й поле.
Ако искате всички части от датата да бъдат върнати в едно и също поле, DATE_FORMAT()
функцията може да направи това вместо вас.
MySQL също има куп функции, които връщат конкретни части от дата от дата, като DAY()
, MONTH()
, YEAR()
и др.
Вижте Връщане на деня, месеца и годината в MySQL за още примери.
Оракул
Oracle има TO_CHAR()
функция, която може да се използва за извличане на части от дата в техните собствени полета или всички в едно поле. Ето пример за връщането им в отделни полета:
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;
Резултат:
ДЕН DD МЕСЕЦ ГОДИНА ____________ _____ ____________ _______ сряда, 26 септември 2035 г.
Вижте този пълен списък с елементи за формат на дата и час в Oracle за списък с елементи на формат, които могат да се използват за форматиране на стойности за дата и час с тази функция.
Oracle също има EXTRACT()
функция, която работи като едноименната функция на MySQL.
SQL сървър
SQL Server има доста голям набор от функции, които могат да връщат части от дата като ден, месец и година.
DATEPART()
функцията е проектирана специално за връщане на определени части от дата:
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;
Резултат:
<пред>+-------+-----------+--------+-------+| ДЕН | ДЕН ОТ ДЕЛНИЦА | МЕСЕЦ | ГОДИНА ||-------+-----------+--------+--------|| 3 | 2 | 7 | 2045 |+-------+-----------+--------+-------+
Подобна функция е DATENAME()
, който може да връща имената на дни и месеци като низ.
SQL Server също има функции като DAY()
, MONTH()
, YEAR()
и т.н., които връщат конкретна част от дата.
И нека не забравяме FORMAT()
функция, която е перфектна, ако искате да върнете всички части от датата в едно и също поле.
Вижте 6 функции за получаване на ден, месец и година от дата в SQL Server за повече примери.
PostgreSQL
PostgreSQL има няколко функции, които могат да връщат части от дати от дати.
Ето пример за DATE_PART()
функция:
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";
Резултат:
Ден | DOW | DOY | Месец | Година -----+-----+-----+-------+------ 30 | 2 | 303 | 10 | 2035
PostgreSQL също има EXTRACT()
функция, която по същество прави същото, освен с малко по-различен синтаксис.
И TO_CHAR()
функцията може да се използва, ако искате да върнете няколко части за дата в едно и също поле.
SQLite
SQLite е по-ограничен, когато става въпрос за функции за дата и час. Все пак можете да използвате STRFTIME()
функция за извличане на деня, месеца и годината от дата:
SELECT STRFTIME('%d %m %Y', '2035-12-01');
Резултат:
01 12 2035
В този пример върнах всички части за дата в едно и също поле. Но това не е задължително. Ако искате да бъдат върнати в различни полета, можете да извикате STRFTIME()
няколко пъти, всеки с различен елемент на формат:
SELECT
strftime('%d', '2035-12-01') AS "Day",
strftime('%m', '2035-12-01') AS "Month",
strftime('%Y', '2035-12-01') AS "Year";
Резултат:
Ден Месец Година--- ----- ----01 12 2035
MariaDB
MariaDB предоставя голям избор от функции, които могат да връщат ден, месец и година от стойност за дата и час.
Ето пример за DATE_FORMAT()
функция:
SELECT DATE_FORMAT('2023-07-25', '%W, %D %M %Y');
Резултат:
+------------------------------------+| DATE_FORMAT('2023-07-25', '%W, %D %M %Y') |+-------------------------- -----------------+| вторник, 25 юли 2023 г. |+--------------------------------------------------- +
Тази функция ни позволява да върнем всички части от датата в едно поле (въпреки че това не е задължително – можете също толкова лесно да върнете всяка част от датата в различно поле, като извикате DATE_FORMAT()
няколко пъти, всеки път с различен форматен низ).
И като някои от другите, MariaDB също има EXTRACT()
функция, която извлича дадена част от дата.
Освен това има голям набор от специфични функции за всяка част от датата, като DAY()
, MONTH()
, YEAR()
и др.
Вижте 11 функции за получаване на деня, месеца и годината от дата в MariaDB за пълен преглед.