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

Quay lại những ngày không có cuối tuần

Chúng tôi có thể sử dụng DayName() hàm lấy tên của ngày trong tuần tương ứng với Ngày. Chúng tôi sẽ sử dụng kết quả của hàm này để hạn chế các ngày cuối tuần trước NOT IN ('Saturday', 'Sunday') .

Ngoài ra, chúng tôi sẽ cần tăng phạm vi trình tạo số tối đa 10 . Bởi vì có khả năng chúng ta có thể đi qua 2 ngày cuối tuần (tổng cộng 4 ngày) ở hai bên của 5 ngày trong tuần.

Vì vậy, chúng ta cần 2 (cặp ngày cuối tuần đầu tiên) + 5 (các ngày trong tuần) + 2 (cặp ngày cuối tuần thứ hai) + 1 (ngày thứ 6 trong tuần) =10 ngày để xem xét. Ví dụ về trường hợp cạnh này sẽ là khi ngày nhập là Chủ nhật.

Chúng tôi sẽ cần sử dụng LIMIT 6 chỉ giới hạn kết quả trong tối đa 6 ngày, trong các trường hợp không cạnh tranh.

Giản đồ (MySQL v5.7)

CREATE TABLE `HELPER_SEQ` (`I` tinyint(3) UNSIGNED NOT NULL);
INSERT INTO `HELPER_SEQ` (`I`) VALUES 
(1),(2),(3),(4),(5),(6),(7),(8),(9),(10);

Truy vấn

SELECT
    DATE_FORMAT((DATE('2018-11-21') - INTERVAL(S.`I` - 1) DAY), '%Y-%m-%d')
    AS VAR
FROM `HELPER_SEQ` AS S 
WHERE S.`I` <= 10 
  AND DAYNAME(DATE_FORMAT((DATE('2018-11-21') - INTERVAL(S.`I` - 1) DAY), '%Y-%m-%d')) NOT IN ('SATURDAY', 'SUNDAY')
ORDER BY VAR DESC
LIMIT 6;

Kết quả

| VAR        |
| ---------- |
| 2018-11-21 |
| 2018-11-20 |
| 2018-11-19 |
| 2018-11-16 |
| 2018-11-15 |
| 2018-11-14 |

Xem trên DB Fiddle

Bản trình diễn Ốp lưng - Ngày nhập:25 tháng 11 năm 2018 (Chủ nhật)

CREATE TABLE `HELPER_SEQ` (`I` tinyint(3) UNSIGNED NOT NULL);
INSERT INTO `HELPER_SEQ` (`I`) VALUES 
(1),(2),(3),(4),(5),(6),(7),(8),(9),(10);

Truy vấn số 2

SELECT
    DATE_FORMAT((DATE('2018-11-25') - INTERVAL(S.`I` - 1) DAY), '%Y-%m-%d')
    AS VAR
FROM `HELPER_SEQ` AS S 
WHERE S.`I` <= 10 
  AND DAYNAME(DATE_FORMAT((DATE('2018-11-25') - INTERVAL(S.`I` - 1) DAY), '%Y-%m-%d')) NOT IN ('SATURDAY', 'SUNDAY')
ORDER BY VAR DESC
LIMIT 6;

Kết quả

| VAR        |
| ---------- |
| 2018-11-23 |
| 2018-11-22 |
| 2018-11-21 |
| 2018-11-20 |
| 2018-11-19 |
| 2018-11-16 |

Xem trên DB Fiddle




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. cách tạo menu động với menu phụ bằng php &mysql

  2. Thay đổi dữ liệu của một ô trong mysql

  3. Nhóm MySQL theo ID và Ngày giờ mới nhất

  4. MySQL tách các ký tự không phải số để so sánh

  5. Giá trị số nguyên không chính xác:'' cho cột 'id' ở hàng 1