Mysql
 sql >> база данни >  >> RDS >> Mysql

Вземете данни за определен период от време

Мисля, че проблемът е в реда на оценка във вашия WHERE клауза. Аз винаги използвайте скоби около OR оператори в SQL. Следното работи на MySQL 5.6.

SELECT * 
FROM tb_test
WHERE  datecreate between '2018-09-24 19:00:00' and '2018-09-26 07:00:00'
AND (hour(DateCreate) >= 19 or hour(DateCreate) < 7);

За справка използвах тази тестова схема:

CREATE table tb_test
(datecreate datetime);

CREATE OR REPLACE VIEW generator_16
AS SELECT 0 n UNION ALL SELECT 1  UNION ALL SELECT 2  UNION ALL 
 SELECT 3   UNION ALL SELECT 4  UNION ALL SELECT 5  UNION ALL
 SELECT 6   UNION ALL SELECT 7  UNION ALL SELECT 8  UNION ALL
 SELECT 9   UNION ALL SELECT 10 UNION ALL SELECT 11 UNION ALL
 SELECT 12  UNION ALL SELECT 13 UNION ALL SELECT 14 UNION ALL 
 SELECT 15;

CREATE OR REPLACE VIEW generator_256
AS SELECT ( ( hi.n << 4 ) | lo.n ) AS n
 FROM generator_16 lo, generator_16 hi;

INSERT INTO tb_test
SELECT date_add("2018-09-24",interval n hour)
FROM generator_256;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Разлика между `brew services start mysql` и `mysql.server start`

  2. Инструкцията за PHP PDO INSERT WHERE NOT EXISTS не работи

  3. избор на сортиране на таблици за универсални знаци

  4. Как мога да получа списък с MySQL бази данни в PHP, използвайки PDO?

  5. Има ли инструмент за генериране на пълна база данни DDL за SQL Server? Какво ще кажете за Postgres и MySQL?