MySQL: SQL-запрос для возврата даты из столбца Date / Timestamp

#mysql #sql #string

#mysql #sql #строка

Вопрос:

В таблице у меня есть сохраненный строковый столбец «ММ / ДД / ГГГГ ЧЧ: ММ: СС», и я ищу запрос для возврата только части «ММ / ДД / ГГГГ».

Есть идеи?

Комментарии:

1. @user693121 — Это MS Sql Server?

2. ДА. И оказывается, что это поле DATETIME, А НЕ строка

Ответ №1:

Если тип столбца — char или varchar , то

SELECT LEFT(colname, 10)

будет достаточно. Если это datetime тип, то попробуйте

SELECT DATE_FORMAT(colname , "%d/%m/%Y")

Комментарии:

1. DATE_FORMAT’ не является распознанным именем встроенной функции 🙁

2. DATE_FORMAT действительно является функцией MySQL. Вы, должно быть, добавили дополнительную цитату или что-то в этом роде.

3. DATE_FORMAT несовместим с Microsoft SQL 2005. Пытаюсь использовать вариант «ПРЕОБРАЗОВАТЬ (VARCHAR(10), столбец 101) В [ММ / ДД / ГГГГ]», но VARCHAR и CHAR также не распознаются.

Ответ №2:

На самом деле вы должны использовать поле MySQL DATETIME вместо поля string. Это позволило бы вам применять функции даты и времени, которые чрезвычайно помогают при работе с временными данными.

В вашем случае, поскольку ваши данные имеют строковый тип, а не в формате MySQL Isodate (ГГГГ-ММ-ДД), вы можете работать только с использованием строковых функций, таких как SUBSTRING() и их специализаций (СЛЕВА, …).

http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html Обзор функций даты и времени

http://dev.mysql.com/doc/refman/5.5/en/string-functions.html Строковые функции

Комментарии:

1. Оказывается, это поля DATETIME. Что бы я применил?

Ответ №3:

я думаю, вы можете использовать substring !!!

ВЫБЕРИТЕ ПОДСТРОКУ (TimeStamp, 7,10);

Ответ №4:

если это строка, используйте SUBSRT() или LEFT() для извлечения требуемой части, однако было бы разумно сохранить ее как тип datatime