我有一個mySql查詢,它爲datetime字段添加了一定的時間間隔。sql - 添加時間間隔跳過一定的時間段
UPDATE table T
SET T.ending = DATE_ADD(T.ending, INTERVAL T.hours * 3600 * some_other_variable_factors SECONDS))
現在,我需要檢測是否有新的結束時間在幾個小時之間(假設20:00至06:00),這應該從計算中排除。
即,如果以前的結局是今天19:58我們加了4分鐘,新的結局應該是明天06:02
另外的困難是添加的時間量可能大於24小時。 所以,如果舊的結局是今天,19.00,我們將24小時,新的結局應該後天是天,15.00(這聽起來是一個非常糟糕的電影的標題;)
有沒有辦法在實現這一目標MySQL的?在一個查詢中?我也在考慮存儲過程,但我沒有任何經驗。
一些測試數據:
CREATE TABLE IF NOT EXISTS `tt` (
`source` datetime NOT NULL,
`hours` int(11) NOT NULL,
`off_start` int(11) NOT NULL,
`off_long` int(11) NOT NULL,
`correct` datetime NOT NULL
) ENGINE=InnoDb;
INSERT INTO `tt` (`source`, `hours`, `off_start`, `off_long`, `correct`) VALUES
('2010-11-11 12:00:00', 1, 20, 10, '2010-11-11 13:00:00'),
('2010-11-11 19:00:00', 1, 20, 10, '2010-11-12 06:00:00'),
('2010-11-11 19:00:00', 2, 20, 10, '2010-11-12 07:00:00'),
('2010-11-11 19:00:00', 3, 20, 10, '2010-11-12 08:00:00'),
('2010-11-11 19:00:00', 24, 20, 10, '2010-11-13 15:00:00'),
('2010-11-11 19:00:00', 48, 20, 10, '2010-11-15 11:00:00'),
('2010-11-11 19:00:00', 72, 20, 10, '2010-11-17 07:00:00');
and where it is 48?或72?我想在這裏冒出巨大的開關 – 2010-11-11 11:17:03
'48'或'72'是什麼,你爲什麼認爲他們應該在這裏? – Quassnoi 2010-11-11 11:19:00
小時添加爲間隔。因爲t_ending是DATETIME,而不是TIME – 2010-11-11 11:22:06