Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Kemunduran dalam kencan tanpa akhir pekan

Kita dapat menggunakan DayName() fungsi untuk mendapatkan nama hari kerja yang sesuai dengan Tanggal. Kami akan menggunakan hasil fungsi ini untuk membatasi akhir pekan dengan NOT IN ('Saturday', 'Sunday') .

Selain itu, kita perlu meningkatkan jangkauan generator angka hingga 10 . Karena ada kemungkinan kita dapat menemukan 2 akhir pekan (total 4 hari) di kedua sisi dari 5 hari kerja.

Jadi, kita membutuhkan 2 (pasangan pertama hari akhir pekan) + 5 (hari kerja) + 2 (pasangan kedua hari akhir pekan) + 1 (hari kerja ke-6) =10 tanggal untuk dipertimbangkan. Contoh kasus tepi ini adalah ketika tanggal input adalah hari Minggu.

Kita perlu menggunakan LIMIT 6 untuk membatasi hasil hingga 6 hari saja, dalam kasus non-tepi.

Skema (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);

Kueri

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;

Hasil

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

Lihat di DB Fiddle

Demo Kasus Tepi - Tanggal input:25 Nov 2018 (Minggu)

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);

Kueri #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;

Hasil

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

Lihat di 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. mysql regex utf-8 karakter

  2. Gunakan konsol MySQL melalui skrip PowerShell

  3. (2006, 'server MySQL telah hilang') di WSGI Django

  4. sambungkan ke server MySQL lokal melalui soket

  5. Bagaimana cara membuat Pagination di Codeiginter?