MySQL Использование строкового столбца с текстом даты в качестве поля даты
Я делаю миграцию базы данных, и в настоящее время у меня есть строковый столбец с датами (вместо того, чтобы установить для них оптимальное поле даты и времени). Есть ли функция, которую я могу вызвать в MySQL, чтобы преобразовать это поле в дату и время, чтобы я мог использовать функции даты, такие как до этой даты или после этой даты?
3 ответа
SELECT *
FROM mytable
WHERE CAST(mydatefield AS DATETIME) >= CAST('2009-01-01' AS DATETIME)
Если ваши даты в каком-то странном формате, MySQL
не понимает, пользуйся STR_TO_DATE
:
SELECT *
FROM mytable
WHERE STR_TO_DATE(mydatefield, '%Y, %d %m') >= STR_TO_DATE('2009, 01 01', '%Y, %d %m')
Вы всегда можете преобразовать дату в отметку времени при извлечении ее из таблицы:
SELECT *
FROM my_table
WHERE UNIX_TIMESTAMP(my_time) > UNIX_TIMESTAMP("2000-10-18 12:30:40");
Если вызывается без аргумента, возвращает метку времени Unix (секунды с UTC 1970-01-01 00:00:00) в виде целого числа без знака. Если UNIX_TIMESTAMP() вызывается с аргументом даты, он возвращает значение аргумента в секундах с UTC 1970-01-01 00:00:00. date может быть строкой DATE, строкой DATETIME, TIMESTAMP или числом в формате YYMMDD или YYYYMMDD. Сервер интерпретирует дату как значение в текущем часовом поясе и преобразует ее во внутреннее значение в UTC. Клиенты могут установить свой часовой пояс, как описано в Разделе 9.7, "Поддержка часового пояса MySQL Server".
Для получения дополнительной информации ознакомьтесь с документацией для UNIX_TIMESTAMP
на веб-сайте MySQL.