在一天中的时间走开

时间:2013-08-02 18:27:52

标签: php sql

这是我需要找出关于那个“”的sql当天不应该在那里。我最终也会发现如果我把它设置为21:00所以1.21必须消失!

现在它适用于日期,但现在似乎是时候了。

这不起作用

SELECT title, Dato, Tidspunkt, antal 
FROM tilmeldt 
WHERE Dato >= CURDATE() Tidspunkt > TIME() 
ORDER BY Dato DESC

这100%

SELECT title, Dato, Tidspunkt, antal 
FROM tilmeldt 
WHERE Dato >= CURDATE() 
ORDER BY Dato DESC

问题在于:当它到了一天的时间,所以它必须立即离开,没有任何反应。

    CREATE TABLE IF NOT EXISTS `tilmeldt` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `title` varchar(150) COLLATE utf8_danish_ci NOT NULL,
  `info` longtext COLLATE utf8_danish_ci NOT NULL,
  `Dato` date NOT NULL,
  `Tidspunkt` time NOT NULL,
  `antal` int(3) NOT NULL,
  `opret_navn` varchar(200) COLLATE utf8_danish_ci NOT NULL,
  `opret_email` varchar(250) COLLATE utf8_danish_ci NOT NULL,
  `opret_id` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_danish_ci AUTO_INCREMENT=3 ;

--
-- Data dump for tabellen `tilmeldt`
--

INSERT INTO `tilmeldt` (`id`, `title`, `info`, `Dato`, `Tidspunkt`, `antal`, `opret_navn`, `opret_email`, `opret_id`) VALUES
(1, 'Hello World', '<p>ehhehehe</p>', '2013-08-02', '16:00:00', 0, 'Jesper', 'jp@hey.dk', 1),
(2, 'herherh', '<p>hererh</p>', '2013-08-02', '21:00:00', 1, 'Jesper', 'jp@hey.dk', 1);

1 个答案:

答案 0 :(得分:2)

那是因为你在where子句中的条件之间缺少ANDOR的逻辑运算符。尝试以下(我在这里假设AND):

SELECT title, Dato, Tidspunkt, antal 
FROM tilmeldt 
WHERE Dato >= CURDATE() AND Tidspunkt > TIME(NOW()) ORDER BY Dato DESC

<强>更新

你也错过了time()函数的参数。见这里:https://dev.mysql.com/doc/refman/5.6/en/date-and-time-functions.html#function_time

或者,您可以使用current_time()函数,如下所示:

SELECT title, Dato, Tidspunkt, antal 
FROM tilmeldt 
WHERE Dato >= CURDATE() AND Tidspunkt > CURRENT_TIME() ORDER BY Dato DESC

选择小提琴中使用的代码(结果中的格式化时间):

SELECT title, Dato, time_format('%H-%i-%s', Tidspunkt) as Tidspunkt, antal 
FROM tilmeldt 
WHERE Dato >= CURDATE() AND Tidspunkt > CURRENT_TIME() ORDER BY Dato DESC