sql >> Database >  >> RDS >> Mysql

MySQL-tekenreeks naar DATE / TIME of TIMESTAMP

Je hebt STR_TO_DATE() . nodig om de string naar een datum te converteren. Overweeg:

select str_to_date(
      'Wed, 18   Oct   2017 10:11:03 GMT',
      '%a, %d %b %Y %T GMT'
 )

Opbrengsten:

2017-10-18 10:11:03

Zodra je strings zijn geconverteerd naar datums, kun je timestampdiff() . gebruiken om het verschil ertussen te berekenen en het resultaat terug te zetten naar een tijd met behulp van sec_to_time() :

select
    person,
    taskID,
    sec_to_time(
            timestampdiff(
            second, 
            str_to_date(Start_time, '%a, %d %b %Y %T GMT'),
            str_to_date(End_time, '%a, %d %b %Y %T GMT')
        )
    ) time_on_task
from mytable

Demo op DB Fiddlde :

| person | taskID | time_on_task |
| ------ | ------ | ------------ |
| Alpha  | 1      | 00:00:33     |
| Alpha  | 2      | 00:00:12     |
| Beta   | 1      | 00:00:46     |
| Alpha  | 3      | 00:01:10     |
| Gamma  | 1      | 03:03:42     |
| Beta   | 2      | 00:00:23     |



  1. Is er een verschil tussen SQL Server Express (2012) en LocalDB?

  2. Foutcode:1215. Kan geen beperking voor externe sleutels toevoegen (buitenlandse sleutels)

  3. Maak een tijdelijke tabel met datums

  4. Behoud regelonderbrekingen van TextArea bij schrijven naar MySQL