три столбца в одну дату

У меня есть база данных с 10+ столбцами. Три столбца представляют день, месяц и год. Теперь мне нужна дата как один тип данных.

Я уже пробовал несколько различных решений, объясненных в Интернете, но они не работали для mysql. И я не могу найти ошибку, которую я сделал.

SELECT *,
CAST(
  CAST(CREATE_YEAR AS VARCHAR(4)) +
  RIGHT('0' + CAST(CREATE_MONTH AS VARCHAR(2)), 2) +
  RIGHT('0' + CAST(CREATE_DAY AS VARCHAR(2)), 2) 
AS DATETIME)
from incident_view

Название трех столбцов: CREATE_DAY, CREATE_MONTH и CREATE_YEAR.

Пример того, как я хочу, чтобы это работало: столбец DAY имеет число 27, месяц - число 5 и год - число 2015. Я хочу, чтобы отображалось как: 27.5.2015.

SELECT *,
STR_TO_DATE( 
     CONCAT( CREATE_DAY, '/', CREATE_MONTH, '/', CREATE_YEAR ),
     '%d/%m/%Y' 
   ) as rcvd_date
FROM incident_view
where CUSTOMER_COMPANY_NAME = "Company" AND (create_month = MONTH(NOW() - INTERVAL 1 MONTH) AND (create_year = YEAR(NOW() - INTERVAL 1 MONTH)))

Этот sql позволил мне иметь логическую колонку в моей базе данных, которая называется rcvd_data. Но он показывает мне день-месяц-год-час-минуту-секунду, а мне нужен только день-месяц и год.

Пример поля данных: 02.01.2016 00:00:00

Буду признателен за любую помощь. Спасибо.


person Community    schedule 01.03.2016    source источник
comment
Весь ваш синтаксис похож на SQL Server. Тем не менее, ваш вопрос помечен как mysql и toad, инструмент, связанный с Oracle. Какую базу данных вы действительно используете? Отметьте свой вопрос соответствующим образом.   -  person Gordon Linoff    schedule 01.03.2016
comment
Я использую жабу для MySQL.   -  person    schedule 01.03.2016


Ответы (1)


В MySQL вы можете использовать:

select str_to_date(concat_ws('-', CREATE_YEAR, CREATE_MONTH, CREATE_DAY),
                   '%Y-%m-%d'
                  ) as CreateDate
person Gordon Linoff    schedule 01.03.2016
comment
Спасибо за ваш ответ. Я следовал вашим инструкциям, но получаю тот же результат... Все еще вижу часы, минуты и секунды в столбце. Более того, если я попытаюсь удалить, например, день, например: SELECT *, str_to_date(concat_ws('-', CREATE_YEAR, CREATE_MONTH), '%Y-%m' ) как CreateDate FROM инцидент_просмотр, где CUSTOMER_COMPANY_NAME = CrossCountry Trains AND (create_month = MONTH (СЕЙЧАС () - ИНТЕРВАЛ 1 МЕСЯЦ) И (создать_год = ГОД (СЕЙЧАС () - ИНТЕРВАЛ 1 МЕСЯЦ))) это показывает мне нуль как поле данных - person ; 01.03.2016
comment
Похоже, проблема в формате вывода даты. Должно быть DATE_FORMAT (результат str_to_date, '%d/%m/%Y') - person StanislavL; 01.03.2016