2013-05-02 2 views
0

У меня 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 
+0

работает хорошо для меня .. Вы можете заполнить фактические данные, используя [sqlFiddle] (http://sqlfiddle.com/) – Manu

+0

как странно. работает нормально и для меня там, но на моем локальном db это не так ... – Elie

+0

немного больше отладки - похоже, проблема связана с concat, потому что я проверил каждое значение, входящее в эту функцию, и каждый представляется правильным. – Elie

ответ

1

Я хотел бы попробовать, чтобы избежать операции строка CONCAT когда касающиеся дат и времени. Для этого нужно использовать date and time func.

Попробуйте, если это сработает для вас. Это дает реальное время, поэтому, если вам нужно отформатировать его для презентации, вам нужно добавить это.

SELECT 
    t1.id, 
    t1.start_time, 
    MAKEDATE(YEAR(t1.start_time), DAYOFYEAR(t1.start_time)) - INTERVAL t2.days_prior DAY + INTERVAL t.2time_open HOUR_SECOND 
FROM 
    t1, t2 
WHERE 
    t1.t2_id = t2.id 

SQLFiddle

+0

Спасибо! Работал как шарм. Все еще интересно, почему моя версия производит то, что выглядит как мусор, но более важным для меня на данный момент является наличие рабочей версии. – Elie

Смежные вопросы