Case-Anweisung in der Where-KlauselMySql

MySQL DBMS-Forum
Anonymous
 Case-Anweisung in der Where-Klausel

Post by Anonymous »

Ist es nicht viel einfacher, das zu schreiben:

Code: Select all

SELECT *
FROM your_table
WHERE CASE
WHEN CURTIME() BETWEEN '11:01:00' AND '15:00:00' THEN created_at BETWEEN CONCAT(CURDATE(), ' 11:01:00') AND CONCAT(CURDATE(), ' 15:00:00')
WHEN CURTIME() BETWEEN '15:01:00' AND '17:00:00' THEN created_at BETWEEN CONCAT(CURDATE(), ' 15:01:00') AND CONCAT(CURDATE(), ' 17:00:00')
ELSE created_at BETWEEN CONCAT(DATE_SUB(CURDATE(), INTERVAL 1 DAY), ' 17:01:00') AND CONCAT(CURDATE(), ' 11:00:00')
END;
als das?

Code: Select all

SELECT *
FROM your_table
WHERE created_at BETWEEN
(
CASE
WHEN CURTIME() BETWEEN '11:01:00' AND '15:00:00' THEN CONCAT(CURDATE(), ' 11:01:00')
WHEN CURTIME() BETWEEN '15:01:00' AND '17:00:00' THEN CONCAT(CURDATE(), ' 15:01:00')
ELSE CONCAT(DATE_SUB(CURDATE(), INTERVAL 1 DAY), ' 17:01:00')
END
)
AND
(
CASE
WHEN CURTIME() BETWEEN '11:01:00' AND '15:00:00' THEN CONCAT(CURDATE(), ' 15:00:00')
WHEN CURTIME() BETWEEN '15:01:00' AND '17:00:00' THEN CONCAT(CURDATE(), ' 17:00:00')
ELSE CONCAT(CURDATE(), ' 11:00:00')
END
);
Ich erhalte die gleichen Ergebnisse.

Auf der ersten kann ich alle gewünschten Anweisungen hinzufügen, nicht nur die erstellte_at, zum Beispiel das Hinzufügen von AND user_id = 1.

Kann mir bitte jemand erklären, warum die zweite besser ist?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post