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

Menyimpan 30-Feb di Mysql (Pemformatan Tanggal)

Menyimpan "nilai" DATE dalam DATE atau DATETIME kolom dimungkinkan menggunakan sql_mode ALLOW_INVALID_DATES dan tidak ada mode ketat:

Jadi memeriksa tanggal untuk tanggal contable yang diizinkan dapat dilakukan dengan pemicu, karena tidak ada pemeriksaan lain juga. Saya berasumsi bahwa untuk aplikasi ini tanggal 31 setiap bulan akan menjadi tanggal yang tidak valid.

Contoh:

CREATE TABLE example (
  contable_date DATE NOT NULL
) ENGINE=INNODB;

-- set the sql_mode (here for the session)
SET @@SESSION.sql_mode = 'ALLOW_INVALID_DATES';

INSERT INTO example (contable_date) VALUES ("2014-02-30");

SELECT 
    DAY(contable_date) as cday,
    MONTH(contable_date) as cmonth,
    TIMESTAMPDIFF(DAY, contable_date, '2014-03-30') as cdiff
FROM 
    example;

Hasil:

cday  cmonth  cdiff
-------------------
  30       2     28

Demo

Menggunakan MySQL Workbench yang saya dapatkan dengan

SELECT contable_date FROM example

hasil berikut:

contable_date
-------------
   2014-02-30

tetapi ini tidak berfungsi di sqlfiddle.com.

Saya tidak akan merekomendasikan ini, terutama karena seseorang tidak dapat menggunakan mode SQL yang ketat. Seseorang harus mempertimbangkan efeknya pada fungsi tanggal dan waktu juga.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ambil semua nama tabel, nama kolom, dan nilai kolom dari database tertentu

  2. Kelas basis data PHP yang berguna

  3. Bagaimana cara mengubah dua tajuk kolom yang berbeda dari tabel database yang sudah ada sebelumnya di sqlalchemy?

  4. Mendapatkan kesalahan Entity Framework saat menjalankan migrasi pada database MySQL. Penggunaan indeks spasial/teks lengkap/hash yang salah dan urutan indeks eksplisit

  5. Array nilai meta serial WooCommerce di tabel wp_postmeta