Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Nhận dữ liệu cho phạm vi thời gian cụ thể

Tôi nghĩ rằng vấn đề là với thứ tự đánh giá trong WHERE của bạn mệnh đề. Tôi luôn luôn sử dụng dấu ngoặc nhọn xung quanh OR toán tử trong SQL. Phần sau hoạt động trên 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);

Để tham khảo, tôi đã sử dụng lược đồ thử nghiệm này:

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. AWS rds - Làm cách nào để đọc từ một bản sao đã đọc bên trong ứng dụng Java?

  2. Cách tạo tìm kiếm toàn cầu trong trang web của tôi

  3. Nhóm Mysql theo hai cột và chọn giá trị lớn nhất của cột thứ ba

  4. Tại sao transaction.wasComiled () trả về false?

  5. Thêm Tiền tố để tự động tăng dần trong mysql db