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

Menggunakan bidang tanggal yang disimpan untuk menghitung bidang yang menghitung jumlah hari yang berlalu saat ini

Anda mungkin ingin membaca tentang CURDATE() dan DATEDIFF() fungsi (dan fungsi lain di MySQL yang mungkin berguna untuk Anda di masa mendatang) di sini:https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_datediff

SELECT *, DATEDIFF(CURDATE(), mydatefield) AS days_since
FROM MyTable;

Jika Anda ingin ini terintegrasi ke dalam tabel, Anda dapat menggunakan VIEW:

CREATE VIEW MyView AS
  SELECT *, DATEDIFF(CURDATE(), mydatefield) AS days_since
  FROM MyTable;

MySQL 5.7 mendukung kolom yang dihasilkan di mana Anda dapat menambahkan kolom virtual berdasarkan ekspresi, tetapi ini tidak berfungsi dalam kasus ini karena menggunakan fungsi non-deterministik seperti CURDATE() tidak diperbolehkan dalam ekspresi seperti itu.

ALTER TABLE MyTable ADD COLUMN days_since INT AS (DATEDIFF(CURDATE(), mydatefield));
ERROR 3102 (HY000): Expression of generated column 'days_since' contains a disallowed function.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Adakah saran untuk skema db untuk menyimpan kata kunci terkait?

  2. Array multidimensi PHP ke daftar tidak berurutan, membangun jalur url

  3. Panggilan balik MySQL - apakah ada yang seperti itu?

  4. Mysql Buat Database dengan karakter khusus di namanya

  5. Bagaimana cara saya menanyakan antara dua rentang waktu menggunakan MySQL?