У меня 3 поля в таблице: start_time: TIMESTAMP
, days_prior: INT
и time_open: TIME
. Я хочу извлечь из этого значение start_time-days, установить временную часть результата на 00:00:00
, а затем добавить к этому время.Добавление дней и времени в метку времени в MySQL
То есть исходная временная метка может быть чем-то вроде «2013-05-02 14:57:00», а дни - 1, время «09: 30: 00», и я хочу вернуться »2013-05- 01 09:30:00 '.
Я понимаю, что это можно сделать, разделив часть даты метки времени, а затем объединив ее со временем. Однако, если бы я хотел использовать результат в том же запросе, что и часть инструкции where, то мне нужно, чтобы результат конкатенации также был меткой времени.
Мой запрос, в идеале, будет выглядеть следующим образом:
SELECT
t1.id,
t1.start_time,
CONCAT(DATE_SUB(DATE(t1.start_time), INTERVAL t2.days_prior DAY), ' ', t2.time_open)
FROM
t1, t2
WHERE
t1.t2_id = t2.id
Это, однако, дает результаты выглядеть как:
1, 2012-10-30 18:00:00, 323031322d31302d33302030393a30303a3030
работает хорошо для меня .. Вы можете заполнить фактические данные, используя [sqlFiddle] (http://sqlfiddle.com/) – Manu
как странно. работает нормально и для меня там, но на моем локальном db это не так ... – Elie
немного больше отладки - похоже, проблема связана с concat, потому что я проверил каждое значение, входящее в эту функцию, и каждый представляется правильным. – Elie