Kaedah Mysql untuk mencari perbezaan masa: 1. Gunakan fungsi TIMEDIFF(), sintaks "TIMEDIFF(dt1, dt2);"; 2. Gunakan fungsi IMESTAMPDIFF(), sintaks "TIMESTAMPDIFF(unit ,mula,akhir); ".
Persekitaran pengendalian tutorial ini: sistem windows7, versi mysql8, komputer Dell G3.
perbezaan masa mysql
fungsi timediff() - mengira perbezaan antara dua nilai TIME atau DATETIME .
fungsi timestampdiff() - Mengira perbezaan antara dua nilai DATE atau DATETIME.
TIMEDIFF
Mengembalikan perbezaan antara dua nilai TIME
atau DATETIME
. Lihat sintaks berikut untuk fungsi TIMEDIFF
. Fungsi
TIMEDIFF(dt1, dt2);
TIMEDIFF
menerima dua parameter yang mestilah daripada jenis yang sama, sama ada TIME
atau DATETIME
. Fungsi TIMEDIFF
mengembalikan hasil dt1 - dt2
yang dinyatakan sebagai nilai masa.
Oleh kerana fungsi TIMEDIFF
mengembalikan nilai TIME
, hasilnya terhad kepada julat nilai -838:59:59
dari 838:59:59
hingga TIME
.
Contoh Fungsi MySQL TIMEDIFF
Mari kita ambil contoh untuk mengira perbezaan antara dua nilai masa.
mysql> SELECT TIMEDIFF('12:00:00','10:00:00') diff; +----------+ | diff | +----------+ | 02:00:00 | +----------+ 1 row in set
Dalam contoh ini, kami mengira perbezaan antara 12:00:00
dan 10:00:00
sebagai: 02:00:00
.
Contoh berikut mengira perbezaan antara dua nilai DATETIME
:
mysql> SELECT TIMEDIFF('2010-01-01 01:00:00', '2010-01-02 01:00:00') diff; +-----------+ | diff | +-----------+ | -24:00:00 | +-----------+ 1 row in set
Jika mana-mana hujah ialah NULL
, fungsi TIMEDIFF
mengembalikan NULL
.
mysql> SELECT TIMEDIFF('2010-01-01',NULL) diff; +------+ | diff | +------+ | NULL | +------+ 1 row in set, 1 warning (0.00 sec)
Jika dua parameter berlainan jenis diluluskan, satu ialah DATETIME
dan satu lagi ialah TIME
, fungsi TIMEDIFF
juga mengembalikan NULL
.
mysql> SELECT TIMEDIFF('2010-01-01 10:00:00','10:00:00') diff; +------+ | diff | +------+ | NULL | +------+ 1 row in set
Sintaks fungsi TIMESTAMPDIFF
diterangkan di bawah. Fungsi
TIMESTAMPDIFF(unit,begin,end);
TIMESTAMPDIFF
mengembalikan hasil begin-end
, dengan begin
dan end
ialah ungkapan DATE
atau DATETIME
. Fungsi
TIMESTAMPDIFF
membenarkan hujahnya mempunyai jenis bercampur, contohnya, begin
ialah nilai DATE
dan end
boleh menjadi nilai DATETIME
. Jika nilai DATE
digunakan, fungsi TIMESTAMPDIFF
menganggapnya sebagai nilai “00:00:00”
dengan bahagian masa DATETIME
. Parameter
unit
ialah unit hasil penentuan (end-begin
), dinyatakan sebagai integer. Berikut adalah unit yang sah:
contoh fungsi MySQL TIMESTAMPDIFF
Contoh berikut akan mengembalikan perbezaan antara2018-01-01
dan 2018-06-01
sebagai nilai bulan: mysql> SELECT TIMESTAMPDIFF(MONTH, '2018-01-01', '2018-06-01') result; +--------+ | result | +--------+ | 5 | +--------+ 1 row in set
Jika anda ingin melihat perbezaannya, cuma tukar parameter unit
daripada MONTH
Tukar kepada DAY
seperti berikut:
mysql> SELECT TIMESTAMPDIFF(DAY, '2010-01-01', '2010-06-01') result; +--------+ | result | +--------+ | 151 | +--------+ 1 row in set
Pernyataan berikut mengembalikan nilai perbezaan (dalam minit) dua DATETIME
nilai:
mysql> SELECT TIMESTAMPDIFF(MINUTE, '2018-01-01 10:00:00', '2018-01-01 10:45:00') result; +--------+ | result | +--------+ | 45 | +--------+ 1 row in set
Sila ambil perhatian, TIMESTAMPDIFF
Hanya bahagian masa yang berkaitan dengan parameter unit
dipertimbangkan. Lihat contoh berikut:
mysql> SELECT TIMESTAMPDIFF(MINUTE, '2018-01-01 10:00:00', '2018-01-01 10:45:59') result; +--------+ | result | +--------+ | 45 | +--------+ 1 row in set
Perbezaan mestilah 45 minit dan 59 saat. Walau bagaimanapun, kami meluluskan hujah unit
sebagai MINUTE
, jadi fungsi mengembalikan 45 minit seperti yang dijangkakan.
Jika anda menggunakan SECOND
dan bukannya MINUTE
, fungsi TIMESTAMPDIFF
akan mempertimbangkan bahagian SECOND
, seperti yang ditunjukkan dalam contoh berikut:
mysql> SELECT TIMESTAMPDIFF(SECOND, '2018-01-01 10:00:00', '2018-01-01 10:45:59') result; +--------+ | result | +--------+ | 2759 | +--------+ 1 row in set
Nota: 45 Minit 59 saat = 45×60 59 (saat) = 2759 saat
Gunakan fungsi MySQL TIMESTAMPDIFF untuk mengira umur
Pertama , kami Cipta jadual baharu bernama untuk tujuan demonstrasi. persons
USE testdb; CREATE TABLE persons ( id INT AUTO_INCREMENT PRIMARY KEY, full_name VARCHAR(255) NOT NULL, date_of_birth DATE NOT NULL );
Kedua , masukkan beberapa baris ke dalam jadual : persons
INSERT INTO persons(full_name, date_of_birth) VALUES('John Doe', '1990-01-01'), ('David Taylor', '1989-06-06'), ('Peter Drucker', '1985-03-02'), ('Lily Minsu', '1992-05-05'), ('Mary William', '1995-12-01');
Langkah ketiga , gunakan Untuk mengira umur setiap orang dalam jadual TIMESTAMPDIFF
: persons
SELECT id, full_name, date_of_birth, TIMESTAMPDIFF(YEAR, date_of_birth, '2018-01-01') age FROM persons;
+----+---------------+---------------+-----+ | id | full_name | date_of_birth | age | +----+---------------+---------------+-----+ | 1 | John Doe | 1990-01-01 | 28 | | 2 | David Taylor | 1989-06-06 | 28 | | 3 | Peter Drucker | 1985-03-02 | 32 | | 4 | Lily Minsu | 1992-05-05 | 25 | | 5 | Mary William | 1995-12-01 | 22 | +----+---------------+---------------+-----+ 5 rows in set
Umur setakat ini. Jika anda ingin mengira umur semasa, anda boleh menggantikan nilai literal 2018-01-01
dengan fungsi NOW
, seperti yang ditunjukkan di bawah: '2018-01-01'
SELECT id, full_name, date_of_birth, TIMESTAMPDIFF(YEAR, date_of_birth, NOW()) age FROM persons;
+----+---------------+---------------+-----+ | id | full_name | date_of_birth | age | +----+---------------+---------------+-----+ | 1 | John Doe | 1990-01-01 | 27 | | 2 | David Taylor | 1989-06-06 | 28 | | 3 | Peter Drucker | 1985-03-02 | 32 | | 4 | Lily Minsu | 1992-05-05 | 25 | | 5 | Mary William | 1995-12-01 | 21 | +----+---------------+---------------+-----+ 5 rows in set
tutorial video mysql]
Atas ialah kandungan terperinci Bagaimana untuk mencari perbezaan masa dalam mysql. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!