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

AM/PM tidak berfungsi menggunakan antara di sql

Sebaiknya simpan tanggal Anda sebagai DATETIME . Karena Anda memiliki nilai-nilai ini, itu sudah menunjukkan bahwa bidang basis data Anda bukan dari date ketik, seperti memasukkan string tersebut ke date bidang tidak akan menghasilkan kesalahan.

Jika ini tidak memungkinkan untuk diubah, maka Anda dapat menggunakan STR_TO_DATE fungsi:

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

Tapi itu benar-benar solusi yang lebih rendah.

Tetap saja, harapan Anda untuk hanya mendapatkan satu baris tampaknya aneh. Tentu saja baris ketiga memenuhi persyaratan, karena tanggal mulai/jatuh tempo adalah sebelum/setelah tanggal yang Anda periksa, terlepas dari bagian waktunya.

Tambahan

Dalam komentar Anda mengatakan Anda ingin menerapkan logika yang berbeda. Saya menebak Anda ingin membandingkan secara terpisah komponen tanggal dan waktu, dan keduanya mematuhi between kondisi. Ini benar-benar harus dijelaskan dalam pertanyaan, karena saat ini tidak ditentukan.

Dalam hal ini, Anda dapat menggunakan DATE_FORMAT untuk mengekstrak hanya bagian waktu, dan ulangi kondisinya dengan itu:

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

Kueri ini akan mengecualikan 3 baris dari hasil.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. perintah mysql tidak sinkron saat menjalankan penyisipan dari seledri

  2. tingkat isolasi dan penguncian inno db

  3. mysql echo tidak mengambil kata setelah spasi di kotak teks

  4. bagaimana cara memeriksa apakah sebuah string terlihat acak, atau dibuat oleh manusia dan dapat diucapkan?

  5. Bagaimana cara membuat daftar parameter prosedur tersimpan mysql