sql >> Databáze >  >> RDS >> Mysql

AM/PM nefunguje pomocí mezi v sql

Data byste měli raději ukládat jako DATETIME . Protože máte tyto hodnoty, již to ukazuje, že vaše databázová pole nejsou z date typu, jako vkládání takových řetězců do date pole by nezpůsobilo chybu.

Pokud to nelze změnit, můžete použít STR_TO_DATE funkce:

SELECT * 
FROM `task` 
WHERE t_status !=3 
AND   STR_TO_DATE('2018-01-19 03:56 PM', '%Y-%m-%d %h:%i %p') BETWEEN
        STR_TO_DATE(t_started_on, '%Y-%m-%d %h:%i %p') AND 
        STR_TO_DATE(t_due_on, '%Y-%m-%d %h:%i %p')

Ale to je opravdu podřadné řešení.

Přesto se vaše očekávání, že dostanete pouze jeden řádek, zdá podivné. Třetí řádek určitě splňuje požadavek, protože data zahájení/splatnosti jsou před/po datu, které kontrolujete, bez ohledu na časové části.

Dodatek

V komentářích říkáte, že chcete použít jinou logiku. hádám chcete porovnat odděleně složky data a času a obě tak, aby vyhovovaly between stav. To by skutečně mělo být vysvětleno v otázce, protože v současné době to není specifikováno.

V takovém případě můžete použít DATE_FORMAT extrahovat pouze časovou část a zopakovat podmínku s tímto:

SELECT *,
       STR_TO_DATE(t_started_on, '%Y-%m-%d %h:%i %p'),
       STR_TO_DATE(t_due_on, '%Y-%m-%d %h:%i %p'),
       STR_TO_DATE('2018-01-19 03:56 PM', '%Y-%m-%d %h:%i %p')
FROM `task` 
WHERE t_status !=3 
AND   STR_TO_DATE('2018-01-19 03:56 PM', '%Y-%m-%d %h:%i %p') BETWEEN
        STR_TO_DATE(t_started_on, '%Y-%m-%d %h:%i %p') AND 
        STR_TO_DATE(t_due_on, '%Y-%m-%d %h:%i %p')
AND   DATE_FORMAT(STR_TO_DATE('2018-01-19 03:56 PM', '%Y-%m-%d %h:%i %p'), '%h:%i') BETWEEN
        DATE_FORMAT(STR_TO_DATE(t_started_on, '%Y-%m-%d %h:%i %p'), '%h:%i') AND 
        DATE_FORMAT(STR_TO_DATE(t_due_on, '%Y-%m-%d %h:%i %p'), '%h:%i')

Tento dotaz vyloučí z výsledku 3 řádek.




  1. Problém s instalací Ruby on Rails - Jak používat instalaci WAMP MySQL?

  2. Databáze se neaktualizuje automaticky pomocí MySQL a Pythonu

  3. SELECT dotaz vrátí 1 řádek z každé skupiny

  4. MySQL 8 vytvořte nového uživatele s nefunkčním heslem