집 >데이터 베이스 >MySQL 튜토리얼 >mysql에서 시차를 찾는 방법
Mysql에서 시차를 찾는 방법: 1. TIMEDIFF() 함수를 사용하고 "TIMEDIFF(dt1, dt2);" 구문을 사용합니다. 2. IMESTAMPDIFF() 함수를 사용하여 "TIMESTAMPDIFF(unit,begin,end);" 구문을 사용합니다.
이 튜토리얼의 운영 환경: windows7 시스템, mysql8 버전, Dell G3 컴퓨터.
mysql은 시차를 찾습니다
timediff() 함수 - 두 개의 TIME 또는 DATETIME 값 사이의 차이를 계산합니다.
timestampdiff() 함수 - 두 DATE 또는 DATETIME 값 사이의 차이를 계산합니다.
TIMEDIFF
는 두 TIME
또는 DATETIME
값 사이의 차이를 반환합니다. TIMEDIFF
함수에 대한 다음 구문을 참조하세요. TIMEDIFF
返回两个TIME
或DATETIME
值之间的差值。 请参阅TIMEDIFF
函数的以下语法。
TIMEDIFF(dt1, dt2);
TIMEDIFF
函数接受两个必须为相同类型的参数,即TIME
或DATETIME
。 TIMEDIFF
函数返回表示为时间值的dt1 - dt2
的结果。
因为TIMEDIFF
函数返回TIME
值,所以其结果被限制在从-838:59:59
到838:59:59
的TIME
值范围内。
MySQL TIMEDIFF函数示例
让我们举一个例子来计算两个时间值之间的差异。
mysql> SELECT TIMEDIFF('12:00:00','10:00:00') diff; +----------+ | diff | +----------+ | 02:00:00 | +----------+ 1 row in set
在这个例子中,我们计算了12:00:00
和10:00:00
之间的差值为:02:00:00
。
以下示例计算两个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
如果任一参数为NULL
,TIMEDIFF
函数将返回NULL
。
mysql> SELECT TIMEDIFF('2010-01-01',NULL) diff; +------+ | diff | +------+ | NULL | +------+ 1 row in set, 1 warning (0.00 sec)
如果传递两个不同类型的参数,一个是DATETIME
,另一个是TIME
,TIMEDIFF
函数也返回NULL
。
mysql> SELECT TIMEDIFF('2010-01-01 10:00:00','10:00:00') diff; +------+ | diff | +------+ | NULL | +------+ 1 row in set
下面说明了TIMESTAMPDIFF
函数的语法。
TIMESTAMPDIFF(unit,begin,end);
TIMESTAMPDIFF
函数返回begin-end
的结果,其中begin
和end
是DATE
或DATETIME
表达式。
TIMESTAMPDIFF
函数允许其参数具有混合类型,例如,begin
是DATE
值,end
可以是DATETIME
值。 如果使用DATE
值,则TIMESTAMPDIFF
函数将其视为时间部分为“00:00:00”
的DATETIME
值。
unit
参数是确定(end-begin
)的结果的单位,表示为整数。 以下是有效单位:
MySQL TIMESTAMPDIFF函数示例
以下示例将以月份值的形式返回2018-01-01
和2018-06-01
的差值:
mysql> SELECT TIMESTAMPDIFF(MONTH, '2018-01-01', '2018-06-01') result; +--------+ | result | +--------+ | 5 | +--------+ 1 row in set
如果您希望看到差值,只需要将unit
参数从MONTH
更改为DAY
,如下所示:
mysql> SELECT TIMESTAMPDIFF(DAY, '2010-01-01', '2010-06-01') result; +--------+ | result | +--------+ | 151 | +--------+ 1 row in set
以下语句返回两个DATETIME
值(以分钟为单位)的差异值:
mysql> SELECT TIMESTAMPDIFF(MINUTE, '2018-01-01 10:00:00', '2018-01-01 10:45:00') result; +--------+ | result | +--------+ | 45 | +--------+ 1 row in set
请注意,TIMESTAMPDIFF
仅考虑与unit
参数相关的时间部分。 请参阅以下示例:
mysql> SELECT TIMESTAMPDIFF(MINUTE, '2018-01-01 10:00:00', '2018-01-01 10:45:59') result; +--------+ | result | +--------+ | 45 | +--------+ 1 row in set
差值应该是45分59秒。 但是,我们将unit
参数传递为MINUTE
,因此,函数按预期返回45分钟。
如果使用SECOND
而不是MINUTE
,则TIMESTAMPDIFF
函数将考虑SECOND
部分,如以下示例所示:
mysql> SELECT TIMESTAMPDIFF(SECOND, '2018-01-01 10:00:00', '2018-01-01 10:45:59') result; +--------+ | result | +--------+ | 2759 | +--------+ 1 row in set
注:45分59秒= 45×60 + 59(秒)= 2759秒
使用MySQL TIMESTAMPDIFF函数计算年龄
首先,我们创建一个名为persons
的新表,用于演示。
USE testdb; CREATE TABLE persons ( id INT AUTO_INCREMENT PRIMARY KEY, full_name VARCHAR(255) NOT NULL, date_of_birth DATE NOT NULL );
其次,向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');
第三步,使用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
在此语句中,我们计算到2018-01-01
日为止的年龄。如果要计算当前年龄,可以通过NOW
函数替换字面值'2018-01-01'
SELECT id, full_name, date_of_birth, TIMESTAMPDIFF(YEAR, date_of_birth, NOW()) age FROM persons;
TIMEDIFF
함수는 동일한 유형이어야 하는 두 개의 매개변수, 즉 TIME
또는 DATETIME
을 허용합니다. TIMEDIFF
함수는 dt1 - dt2
의 결과를 시간 값으로 반환합니다.
TIMEDIFF
함수는 TIME
값을 반환하기 때문에 결과는 -838:59:59
에서 838로 제한됩니다. <code>TIME
값 범위 내에서는 59 :59입니다. 🎜🎜🎜두 시간 값의 차이를 계산하는 예를 들어 보겠습니다. 🎜+----+---------------+---------------+-----+ | 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🎜이 예에서는
12:00:00
과 10:00:00
의 차이를 다음과 같이 계산했습니다. 02:00:00
. 🎜🎜다음 예에서는 두 DATETIME
값 사이의 차이를 계산합니다. 🎜rrreee🎜두 매개 변수 중 하나가 NULL
인 경우 TIMEDIFF
함수는 를 반환합니다. >NULL
. 🎜rrreee🎜유형이 다른 두 매개변수가 전달되면 하나는 DATETIME
이고 다른 하나는 TIME
인 경우 TIMEDIFF
함수도 NULL
. 🎜rrreeeTIMESTAMPDIFF
함수의 구문은 아래에 설명되어 있습니다. 🎜rrreee🎜 TIMESTAMPDIFF
함수는 begin-end
의 결과를 반환합니다. 여기서 begin
및 end
는 입니다. DATE 또는 <code>DATETIME
표현식. 🎜🎜TIMESTAMPDIFF
함수를 사용하면 매개변수가 혼합 유형을 가질 수 있습니다. 예를 들어 begin
은 DATE
값이고 end code>는 DATETIME
값일 수 있습니다. DATE
값이 사용되는 경우 TIMESTAMPDIFF
함수는 이를 시간 부분이 "00:00:00"인 <code>DATETIME
으로 처리합니다. 코드>값. 🎜🎜unit
매개변수는 (end-begin
)의 결과를 결정하는 데 사용되는 단위로, 정수로 표시됩니다. 유효한 단위는 다음과 같습니다. 🎜2018-01-01
와 2018-06-01
의 차이는 월 값으로 반환됩니다. 🎜rrreee🎜차이를 확인하려면 unit
매개변수는 다음과 같이 MONTH
에서 DAY
로 변경됩니다. 🎜rrreee🎜다음 문은 두 개의 DATETIME
값을 반환합니다. 차이점 값(분): 🎜rrreee🎜 TIMESTAMPDIFF
는 unit
매개변수와 관련된 시간 부분만 고려한다는 점에 유의하세요. 아래 예를 참조하세요. 🎜rrreee🎜 차이는 45분 59초여야 합니다. 그러나 unit
매개변수를 MINUTE
로 전달했으므로 함수는 예상대로 45분을 반환합니다. 🎜🎜MINUTE
대신 SECOND
를 사용하는 경우 TIMESTAMPDIFF
함수는 다음과 같이 SECOND
부분을 고려합니다. 다음 예 :🎜rrreee🎜🎜참고: 45분 59초 = 45×60 + 59(초) = 2759초🎜🎜🎜🎜나이를 계산하려면 MySQL TIMESTAMPDIFF 함수를 사용하세요🎜🎜🎜우선 em>, 데모용으로 persons
에 대한 새 테이블이라는 파일을 만듭니다. 🎜rrreee🎜두 번째로, persons
테이블에 일부 행을 삽입합니다. 🎜rrreee🎜🎜세 번째 단계🎜, TIMESTAMPDIFF
를 사용하여 를 계산합니다. person
테이블에 있는 각 사람의 나이: 🎜rrreee🎜위 쿼리 문을 실행하면 다음과 같은 결과가 나옵니다. 🎜rrreee🎜이 문에서는 2018-01-01 나이. 현재 나이를 계산하려면 아래와 같이 리터럴 값 <code>'2018-01-01'
을 NOW
함수로 바꿀 수 있습니다. 위의 쿼리 문을 실행하면 다음 결과를 얻을 수 있습니다. -🎜rrreee🎜[관련 권장 사항: 🎜mysql 비디오 튜토리얼🎜]🎜
위 내용은 mysql에서 시차를 찾는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!