Подтвердить что ты не робот

MySQL CAST как дата

Я пытаюсь понять, что отличает значение типа DATE в MySQL. Вот некоторые вещи, которые я пробовал:

SELECT CAST('3' AS DATE);
-- null

SELECT CAST(3 AS DATE);
-- null

SELECT CAST('2014-07-01 19:00:01' AS DATE);
-- 2014-07-01

SELECT DATE('2014-07-01 19:00:01');
-- 2014-07-01

SELECT CAST('2014-07-01' AS DATE);
-- 2014-07-01

SELECT DATE('2014-07-01');
-- 2014-07-01

SELECT CAST('2014-07-50' AS DATE);
-- null

SELECT DATE('2014-07-50');
-- null

SELECT DATE(''), CAST('' AS DATE), DATE(0), CAST(0 AS DATE);
-- null, null, 0000-00-00, 0000-00-00

Все, что я пробовал, похоже, либо преобразует его в null если оно недействительно, либо возвращает часть даты строки, если это действительная дата. Я даже пробовал даты со слэшами и другими форматами, такими же результатами.

Какая разница между использованием функции DATE(expr) и CAST(expr AS DATE)?

DATE(expr): извлекает часть даты выражения даты или даты и времени expr.

CAST(expr AS type): функция CAST() принимает выражение любого типа и создает значение результата указанного типа, аналогичное CONVERT()

Аналогичным образом, один и тот же вопрос можно задать примерно раз с TIME(expr) и CAST(expr AS TIME).

4b9b3361