sql >> Database teknologi >  >> RDS >> Mysql

TIMEDIFF() vs SUBTIME() i MySQL:Hvad er forskellen?

Du har måske bemærket, at MySQL har en TIMEDIFF() funktion og en SUBTIME() fungere. Og du har måske bemærket, at i mange tilfælde giver de begge det samme resultat. Så du undrer dig måske over, hvad forskellen er mellem disse to funktioner?

Lad os finde ud af det.

Syntaks

Lad os først se på syntaksen for hver funktion.

SUBTIME()

SUBTIME(expr1,expr2)

Hvor expr1 er et klokkeslæt eller datetime-udtryk, og expr2 er et tidsudtryk.

TIMEDIFF()

TIMEDIFF(expr1,expr2)

Hvor expr1 og expr2 er tids- eller dato-og-tidsudtryk, men begge skal være af samme type.

Forskellen

Så her er forskellen:

  • Når du bruger SUBTIME() , skal det andet argument være et tidsudtryk .
  • Når du bruger TIMEDIFF() det andet argument kan enten være klokkeslæt eller dato-og-tids-udtryk, men i begge tilfælde skal det være den samme type som det første udtryk .

Eksempel 1 – Begge argumenter er 'tidsværdier'

Her er en sammenligning af begge funktioner, hvor begge argumenter er tidsværdier.

SELECT 
    TIMEDIFF('11:35:25', '10:35:25') AS 'TIMEDIFF',
    SUBTIME('11:35:25', '10:35:25') AS 'SUBTIME';

Resultat:

+----------+----------+
| TIMEDIFF | SUBTIME  |
+----------+----------+
| 01:00:00 | 01:00:00 |
+----------+----------+

Som forventet returnerer begge funktioner det samme resultat.

Eksempel 2 – Begge argumenter er 'datetime'-værdier

Her er en sammenligning af begge funktioner, hvor begge argumenter er datetime-værdier.

SELECT 
    TIMEDIFF('2021-02-01 10:35:25', '2021-01-01 10:35:25') AS 'TIMEDIFF',
    SUBTIME('2021-02-01 10:35:25', '2021-01-01 10:35:25') AS 'SUBTIME';

Resultat:

+-----------+---------+
| TIMEDIFF  | SUBTIME |
+-----------+---------+
| 744:00:00 | NULL    |
+-----------+---------+

I dette tilfælde SUBTIME() returnerede en null-værdi, fordi dets andet argument ikke var en tidsværdi (det var en datetime-værdi).

Eksempel 3 – Første argument er 'datetime', andet er 'time'

Her er det første argument en datetime-værdi. Det andet argument er en tidsværdi.

SELECT 
    TIMEDIFF('2021-02-01 10:35:25', '09:35:25') AS 'TIMEDIFF',
    SUBTIME('2021-02-01 10:35:25', '09:35:25') AS 'SUBTIME';

Resultat:

+----------+---------------------+
| TIMEDIFF | SUBTIME             |
+----------+---------------------+
| NULL     | 2021-02-01 01:00:00 |
+----------+---------------------+

I dette tilfælde TIMEDIFF() returnerede en null-værdi, fordi begge argumenter var af forskellig type.

Eksempel 4 – Første argument er 'tid', andet er 'datotid'

Og her bytter vi det rundt. Det første argument er en tidsværdi. Det andet argument er en datetime-værdi.

SELECT 
    TIMEDIFF('09:35:25', '2021-01-01 10:35:25') AS 'TIMEDIFF',
    SUBTIME('09:35:25', '2021-01-01 10:35:25') AS 'SUBTIME';

Resultat:

+----------+---------+
| TIMEDIFF | SUBTIME |
+----------+---------+
| NULL     | NULL    |
+----------+---------+

I dette tilfælde:

  • TIMEDIFF() returnerede en null-værdi, fordi begge argumenter var af forskellig type.
    SUBTIME() returnerede en null-værdi, fordi den kun accepterer en tidsværdi for sit andet argument.

  1. Tuning af SQL Server Reporting Services

  2. Hvordan kan jeg oprette et installationsprogram til en hjemmeside. PHP mysql

  3. Udlejning af biler er lige så enkelt som at køre:En datamodel for et biludlejningsfirma

  4. Sådan installeres MySQL 8 på Windows