В MariaDB можете да използвате DATE_FORMAT()
функция за връщане на различни части от дата от дата. Едно от нещата, които можете да върнете, е краткото име на деня. Например Tue
или Wed
(вместо Tuesday
или Wednesday
).
Определителят на формата „Short Day Name“ (%a
)
Ключът за връщане на краткото име на деня при използване на DATE_FORMAT()
функцията е да се използва приложимият спецификатор на формат.
В MariaDB спецификаторът на формата за краткото име на деня е:%a
Пример
Ето пример за демонстрация:
SELECT DATE_FORMAT('2023-07-25', '%a');
Резултат:
+---------------------------------+ | DATE_FORMAT('2023-07-25', '%a') | +---------------------------------+ | Tue | +---------------------------------+
Ето още един пример, който минава през различните дни от седмицата:
SELECT
DATE_FORMAT('2023-07-24', '%a') AS "1",
DATE_FORMAT('2023-07-25', '%a') AS "2",
DATE_FORMAT('2023-07-26', '%a') AS "3",
DATE_FORMAT('2023-07-27', '%a') AS "4",
DATE_FORMAT('2023-07-28', '%a') AS "5",
DATE_FORMAT('2023-07-29', '%a') AS "6",
DATE_FORMAT('2023-07-30', '%a') AS "7";
Резултат:
+------+------+------+------+------+------+------+ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | +------+------+------+------+------+------+------+ | Mon | Tue | Wed | Thu | Fri | Sat | Sun | +------+------+------+------+------+------+------+
Можете да върнете и други единици за дата и час, но тази статия е специално за връщането на краткото име на деня. Вижте MariaDB Format String за списък с спецификатори на формат, които могат да се използват с DATE_FORMAT()
.
Други подходи
Има и други начини да получите краткото име на деня от дата, които включват отрязване на първата част от деня.
Това обаче може да бъде по-податливо на грешки от горния метод (плюс това е по-сложен). Можете да получите някои неочаквани резултати, когато използвате този метод, особено когато работите с различни езици.
Ето няколко примера, които да демонстрират какво имам предвид.
Вместо да използвате %a
спецификатор на формат, както направихме в предишния пример, можем да използваме %W
спецификатор на формат, за да върне пълното име на деня, след което върнете съкратете този резултат с функция като LEFT()
.
Пример:
SELECT
DATE_FORMAT('2023-07-25', '%W') AS Full,
LEFT(DATE_FORMAT('2023-07-25', '%W'), 3) AS Short;
Резултат:
+---------+-------+ | Full | Short | +---------+-------+ | Tuesday | Tue | +---------+-------+
Като алтернатива бихме могли да използваме функция като CAST()
за да конвертирате в тип данни само с три знака, като този:
SELECT
DATE_FORMAT('2023-07-25', '%W') AS Full,
CAST(DATE_FORMAT('2023-07-25', '%W') AS CHAR(3)) AS Short;
Резултат:
+---------+-------+ | Full | Short | +---------+-------+ | Tuesday | Tue | +---------+-------+
Това работи добре при работа с английски език (и може би някои други езици). Но нека видим какво се случва, когато преминем към друг език – да речем японски:
SELECT
DATE_FORMAT('2023-07-25', '%W', 'ja_JP') AS Full,
LEFT(DATE_FORMAT('2023-07-25', '%W', 'ja_JP'), 3) AS Short;
Резултат:
+-----------+-----------+ | Full | Short | +-----------+-----------+ | 火曜日 | 火曜日 | +-----------+-----------+
В този случай няма разлика.
За разлика от това, ето какво се случва, когато използваме %a
спецификатор на формат, за да върне краткото име на деня:
SELECT
DATE_FORMAT('2023-07-25', '%W', 'ja_JP') AS Full,
DATE_FORMAT('2023-07-25', '%a', 'ja_JP') AS Short;
Резултат:
+-----------+-------+ | Full | Short | +-----------+-------+ | 火曜日 | 火 | +-----------+-------+
Затова бих препоръчал да използвате %a
спецификатор на формат, когато е възможно.