Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Cách tính chênh lệch giữa hai ngày trong tháng trong MySQL

Hãy xem TIMESTAMPDIFF () trong MySQL.

Điều này cho phép bạn làm là chuyển hai TIMESTAMP hoặc DATETIME giá trị (hoặc thậm chí DATE vì MySQL sẽ tự động chuyển đổi) cũng như đơn vị thời gian bạn muốn dựa vào sự khác biệt của mình.

Bạn có thể chỉ định MONTH làm đơn vị trong tham số đầu tiên:

SELECT TIMESTAMPDIFF(MONTH, '2012-05-05', '2012-06-04')
-- 0
SELECT TIMESTAMPDIFF(MONTH, '2012-05-05', '2012-06-05')
-- 1
SELECT TIMESTAMPDIFF(MONTH, '2012-05-05', '2012-06-15')
-- 1
SELECT TIMESTAMPDIFF(MONTH, '2012-05-05', '2012-12-16')
-- 7

Về cơ bản, nó lấy số tháng trôi qua kể từ ngày đầu tiên trong danh sách tham số. Giải pháp này tính đến lượng ngày khác nhau trong mỗi tháng (28,30,31) cũng như các năm nhuận.

Nếu bạn muốn có độ chính xác thập phân theo số tháng đã trôi qua, thì phức tạp hơn một chút, nhưng đây là cách bạn có thể làm điều đó:

SELECT 
  TIMESTAMPDIFF(MONTH, startdate, enddate) +
  DATEDIFF(
    enddate,
    startdate + INTERVAL
      TIMESTAMPDIFF(MONTH, startdate, enddate)
    MONTH
  ) /
  DATEDIFF(
    startdate + INTERVAL
      TIMESTAMPDIFF(MONTH, startdate, enddate) + 1
    MONTH,
    startdate + INTERVAL
      TIMESTAMPDIFF(MONTH, startdate, enddate)
    MONTH
  )

Nơi startdateenddate là các tham số ngày của bạn, cho dù đó là từ hai cột ngày trong bảng hay dưới dạng tham số đầu vào từ tập lệnh:

Ví dụ:

With startdate = '2012-05-05' AND enddate = '2012-05-27':
-- Outputs: 0.7097
With startdate = '2012-05-05' AND enddate = '2012-06-13':
-- Outputs: 1.2667
With startdate = '2012-02-27' AND enddate = '2012-06-02':
-- Outputs: 3.1935


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Gán xml được tạo bởi vòng lặp while cho một biến

  2. ini_set, set_time_limit, (max_execution_time) - không hoạt động

  3. Có một chức năng để đóng một câu lệnh được chuẩn bị sẵn mysql với PDO không?

  4. Chuyển đổi chuỗi sang định dạng dấu thời gian MySQL trong php

  5. Cấu hình khả dụng cao cho các nút ClusterControl sử dụng CMON HA