Maison >base de données >tutoriel mysql >Comment obtenir l'heure et l'horodatage actuels dans MySQL

Comment obtenir l'heure et l'horodatage actuels dans MySQL

醉折花枝作酒筹
醉折花枝作酒筹avant
2021-08-13 09:42:4927486parcourir

MySQL est le système de gestion de bases de données relationnelles le plus populaire En termes d'applications WEB, MySQL est l'un des meilleurs logiciels d'application SGBDR. Dans cette introduction, vous maîtriserez rapidement la méthode MySQL pour obtenir l'heure et l'horodatage actuels et utiliserez facilement la base de données MySQL.

Comment obtenir l'heure et l'horodatage actuels dans MySQL

Obtenir la fonction date + heure actuelle (date + heure) : now()

MySQL> select now();
+———————+
| now() |
+———————+
| 2013-04-08 20:56:19 |
+———————+

En plus de la fonction now() qui peut obtenir la date et l'heure actuelles, MySQL a également les fonctions suivantes :

current_timestamp()
,current_timestamp,localtime()
,localtime
,localtimestamp — (v4.0.6)
,localtimestamp() — (v4.0.6)

Ces fonctions de date et d'heure sont équivalentes à now(). Étant donné que la fonction now() est courte et facile à retenir, il est recommandé de toujours utiliser now() au lieu des fonctions répertoriées ci-dessus.

Obtenir la fonction date + heure actuelle (date + heure) : sysdate()

sysdate() La fonction date et heure est similaire à now(), la différence est : now() La valeur est obtenue à Au début de l'exécution, sysdate() obtient la valeur dynamiquement lorsque la fonction est exécutée. Vous pouvez le comprendre en regardant l'exemple suivant :

mysql> select now(), sleep(3), now();
+———————+———-+———————+
| now() | sleep(3) | now() |
+———————+———-+———————+
| 2013-04-08 20:57:46 | 0 | 2013-04-08 20:57:46 |
+———————+———-+———————+
mysql> select sysdate(), sleep(3), sysdate();
+———————+———-+———————+
| sysdate() | sleep(3) | sysdate() |
+———————+———-+———————+
| 2013-04-08 20:58:47 | 0 | 2013-04-08 20:58:50 |
+———————+———-+———————+

Vous pouvez voir que bien qu'il dort pendant 3 secondes au milieu, la valeur temporelle obtenue deux fois par la fonction now() est la même que la valeur temporelle obtenue deux fois par la fonction now() ; La fonction sysdate() diffère de 3 secondes. Le manuel MySQL décrit sysdate() comme ceci : renvoie l'heure à laquelle la fonction s'exécute.

fonction de date et d'heure sysdate(), rarement utilisée en général.

Obtenir la fonction date (date) actuelle : curdate()

mysql> select curdate();
+————+
| curdate() |
+————+
| 2013-04-08 |
+————+

Parmi elles, les deux fonctions de date suivantes sont équivalentes à curdate() :

current_date()
,current_date

Obtenir la fonction heure (time) actuelle : curtime()

mysql> select curtime();
+———–+
| curtime() |
+———–+
| 21:00:11 |
+———–+

Parmi elles, les deux fonctions temporelles suivantes sont équivalentes à curtime() :

current_time()
,current_time

Obtenir les fonctions de date et d'heure UTC actuelles : utc_date(), utc_time(), utc_timestamp()

mysql> select utc_timestamp(), utc_date(), utc_time(),now();
+———————+————+————+———————+
| utc_timestamp() | utc_date() | utc_time() | now() |
+———————+————+————+———————+
| 2013-04-08 13:01:32 | 2013-04-08 | 13:01:32 |2013-04-08 21:01:32 |
+———————+————+————+———————+

Parce que notre pays est situé dans le huitième fuseau horaire Est, donc l'heure locale = heure UTC + 8 heures. L’heure UTC est très utile lorsque l’entreprise implique plusieurs pays et régions.

Fonction d'extraction (sélection) de date et d'heure MySQL.

1. Sélectionnez chaque partie de la date et de l'heure : date, heure, année, trimestre, mois, jour, heure, minute, seconde, microseconde

set @dt = ’2008-09-10 07:15:30.123456′;
select date(@dt); — 2008-09-10
select time(@dt); — 07:15:30.123456
select year(@dt); — 2008
select quarter(@dt); — 3
select month(@dt); — 9
select week(@dt); — 36
select day(@dt); — 10
select hour(@dt); — 7
select minute(@dt); — 15
select second(@dt); — 30
select microsecond(@dt); — 123456

2. Fonction MySQL Extract(), vous pouvez implémenter une fonction similaire. Fonction ci-dessus :

et @dt = ’2008-09-10 07:15:30.123456′;
select extract(year from @dt); — 2008
select extract(quarter from @dt); — 3
select extract(month from @dt); — 9
select extract(week from @dt); — 36
select extract(day from @dt); — 10
select extract(hour from @dt); — 7
select extract(minute from @dt); — 15
select extract(second from @dt); — 30
select extract(microsecond from @dt); — 123456select extract(year_month from @dt); — 200809
select extract(day_hour from @dt); — 1007
select extract(day_minute from @dt); — 100715
select extract(day_second from @dt); — 10071530
select extract(day_microsecond from @dt); — 10071530123456
select extract(hour_minute from @dt); — 715
select extract(hour_second from @dt); — 71530
select extract(hour_microsecond from @dt); — 71530123456
select extract(minute_second from @dt); — 1530
select extract(minute_microsecond from @dt); — 1530123456
select extract(second_microsecond from @dt); — 30123456

La fonction MySQL Extract() a toutes les fonctions sauf date() et time(). Il dispose également de fonctions telles que la sélection de « jour_microseconde ». Notez qu'au lieu de simplement sélectionner le jour et la microseconde, vous sélectionnez de la partie jour de la date à la partie microseconde. C'est déjà assez dur !

Le seul inconvénient de la fonction MySQL Extract() est que vous devez appuyer plusieurs fois sur le clavier.

3. Fonction MySQL dayof... : dayofweek(), dayofmonth(), dayofyear()

Renvoie le paramètre de date, la position dans la semaine, le mois et l'année respectivement.

set @dt = ’2008-08-08′;
select dayofweek(@dt); — 6
select dayofmonth(@dt); — 8
select dayofyear(@dt); — 221

La date '2008-08-08' est le 6ème jour de la semaine (1 = dimanche, 2 = lundi,…, 7 = samedi 8ème jour de janvier) ;

4. Fonction MySQL week... : week(), weekofyear(), dayofweek(), weekday(), yearweek()

set @dt = ’2008-08-08′;
select week(@dt); — 31
select week(@dt,3); — 32
select weekofyear(@dt); — 32
select dayofweek(@dt); — 6
select weekday(@dt); — 4
select yearweek(@dt); — 200831

MySQL week() fonction, qui peut avoir deux paramètres, veuillez vous référer au manuel pour plus de détails. Weekofyear() est identique à week(), qui calculent tous deux la semaine de l'année où se trouve « un certain jour ». weekofyear (@dt) est équivalent à week (@dt,3).

La fonction MySQL weekday() est similaire à dayofweek(), les deux renvoient la position de "un jour" dans la semaine. La différence réside dans la norme de référence, jour de la semaine : (0 = lundi, 1 = mardi, …, 6 = dimanche) ; (1 = dimanche, 2 = lundi, …, 7 = samedi)

Fonction MySQL yearweek() , Année de retour (2008) + position de la semaine (31).

5. MySQL renvoie les fonctions de nom de semaine et de mois : dayname(),monthname()

set @dt = ’2008-08-08′;
select dayname(@dt); — Friday
select monthname(@dt); — August

Vous vous demandez comment renvoyer le nom chinois ?

6. Fonction MySQL last_day() : renvoie le dernier jour du mois.

select last_day(’2008-02-01′); — 2008-02-29
select last_day(’2008-08-08′); — 2008-08-31

La fonction MySQL last_day() est très utile. Par exemple, si je veux obtenir le nombre de jours du mois en cours, je peux le calculer comme ceci :

mysql> select now(), day(last_day(now())) as days;
+———————+——+
| now() | days |
+———————+——+
| 2013-04-08 21:03:14 | 30 |
+———————+——+

Fonction de calcul de date et d'heure MySQL

. 1. MySQL ajoute un intervalle de temps à la date : date_add()

set @dt = now();
select date_add(@dt, interval 1 day); — add 1 day
select date_add(@dt, interval 1 hour); — add 1 hour
select date_add(@dt, interval 1 minute); — …
select date_add(@dt, interval 1 second);
select date_add(@dt, interval 1 microsecond);
select date_add(@dt, interval 1 week);
select date_add(@dt, interval 1 month);
select date_add(@dt, interval 1 quarter);
select date_add(@dt, interval 1 year);
select date_add(@dt, interval -1 day); — sub 1 day

MySQL adddate(), les fonctions addtime() peuvent être remplacées par date_add(). Voici un exemple de date_add() implémentant la fonction addtime() :

mysql> set @dt = ’2008-08-09 12:12:33′;
mysql>
mysql> select date_add(@dt, interval ’01:15:30′ hour_second);
+——————————————+
| date_add(@dt, interval ’01:15:30′ hour_second) |
+——————————————+
| 2008-08-09 13:28:03 |
+——————————————+
mysql> select date_add(@dt, interval ’1 01:15:30′ day_second);
+——————————————+
| date_add(@dt, interval ’1 01:15:30′ day_second) |
+——————————————+
| 2008-08-10 13:28:03 |
+——————————————+

date_add() 函数,分别为 @dt 增加了“1小时 15分 30秒” 和 “1天 1小时 15分 30秒”。建议:总是使用 date_add() 日期时间函数来替代 adddate(), addtime()。

2. MySQL 为日期减去一个时间间隔:date_sub()

mysql> select date_sub(’1998-01-01 00:00:00′, interval ’1 1:1:1′ day_second);
+——————————————+
| date_sub(’1998-01-01 00:00:00′, interval ’1 1:1:1′ day_second) |
+——————————————+
| 1997-12-30 22:58:59 |
+——————————————+

MySQL date_sub() 日期时间函数 和 date_add() 用法一致,不再赘述。另外,MySQL 中还有两个函数 subdate(), subtime(),建议,用 date_sub() 来替代。

3. MySQL 另类日期函数:period_add(P,N), period_diff(P1,P2)

函数参数“P” 的格式为“YYYYMM” 或者 “YYMM”,第二个参数“N” 表示增加或减去 N month(月)。

MySQL period_add(P,N):日期加/减去N月。

mysql> select period_add(200808,2), period_add(20080808,-2)
+——————————————+
| period_add(200808,2) | period_add(20080808,-2) |
+——————————————+
| 200810 | 20080806 |
+——————————————+
MySQL period_diff(P1,P2):日期 P1-P2,返回 N 个月。
mysql> select period_diff(200808, 200801);
+——————————————+
| period_diff(200808, 200801) |
+——————————————+
| 7 |
+——————————————+

在 MySQL 中,这两个日期函数,一般情况下很少用到。

4. MySQL 日期、时间相减函数:datediff(date1,date2), timediff(time1,time2)

MySQL datediff(date1,date2):两个日期相减 date1 – date2,返回天数。
select datediff(’2008-08-08′, ’2008-08-01′); — 7
select datediff(’2008-08-01′, ’2008-08-08′); — -7
MySQL timediff(time1,time2):两个日期相减 time1 – time2,返回 time 差值。
select timediff(’2008-08-08 08:08:08′, ’2008-08-08 00:00:00′); — 08:08:08
select timediff(’08:08:08′, ’00:00:00′); — 08:08:08

注意:timediff(time1,time2) 函数的两个参数类型必须相同。

MySQL 日期转换函数、时间转换函数

1. MySQL (时间、秒)转换函数:time_to_sec(time), sec_to_time(seconds)

select time_to_sec(’01:00:05′); — 3605
select sec_to_time(3605); — ’01:00:05′

2. MySQL (日期、天数)转换函数:to_days(date), from_days(days)

select to_days(’0000-00-00′); — 0
select to_days(’2008-08-08′); — 733627
select from_days(0); — ’0000-00-00′
select from_days(733627); — ’2008-08-08′

3. MySQL Str to Date (字符串转换为日期)函数:str_to_date(str, format)

select str_to_date(’08/09/2008′, ‘%m/%d/%Y’); — 2008-08-09
select str_to_date(’08/09/08′ , ‘%m/%d/%y’); — 2008-08-09
select str_to_date(’08.09.2008′, ‘%m.%d.%Y’); — 2008-08-09
select str_to_date(’08:09:30′, ‘%h:%i:%s’); — 08:09:30
select str_to_date(’08.09.2008 08:09:30′, ‘%m.%d.%Y %h:%i:%s’); — 2008-08-09 08:09:30

可以看到,str_to_date(str,format) 转换函数,可以把一些杂乱无章的字符串转换为日期格式。另外,它也可以转换为时间。“format” 可以参看 MySQL 手册。

4. MySQL Date/Time to Str(日期/时间转换为字符串)函数:date_format(date,format), time_format(time,format)

mysql> select date_format(’2008-08-08 22:23:00′, ‘%W %M %Y’);
+——————————————+
| date_format(’2008-08-08 22:23:00′, ‘%W %M %Y’) |
+——————————————+
| Friday August 2008 |
+——————————————+
mysql> select date_format(’2008-08-08 22:23:01′, ‘%Y%m%d%H%i%s’);
+——————————————+
| date_format(’2008-08-08 22:23:01′, ‘%Y%m%d%H%i%s’) |
+——————————————+
| 20080808222301 |
+——————————————+
mysql> select time_format(’22:23:01′, ‘%H.%i.%s’);
+——————————————+
| time_format(’22:23:01′, ‘%H.%i.%s’) |
+——————————————+
| 22.23.01 |
+——————————————+

MySQL 日期、时间转换函数:date_format(date,format), time_format(time,format) 能够把一个日期/时间转换成各种各样的字符串格式。它是 str_to_date(str,format) 函数的 一个逆转换。

5. MySQL 获得国家地区时间格式函数:get_format()

MySQL get_format() 语法:

get_format(date|time|datetime, ‘eur’|’usa’|’jis’|’iso’|’internal’

MySQL get_format() 用法的全部示例:

select get_format(date,’usa’) ; — ‘%m.%d.%Y’
select get_format(date,’jis’) ; — ‘%Y-%m-%d’
select get_format(date,’iso’) ; — ‘%Y-%m-%d’
select get_format(date,’eur’) ; — ‘%d.%m.%Y’
select get_format(date,’internal’) ; — ‘%Y%m%d’
select get_format(datetime,’usa’) ; — ‘%Y-%m-%d %H.%i.%s’
select get_format(datetime,’jis’) ; — ‘%Y-%m-%d %H:%i:%s’
select get_format(datetime,’iso’) ; — ‘%Y-%m-%d %H:%i:%s’
select get_format(datetime,’eur’) ; — ‘%Y-%m-%d %H.%i.%s’
select get_format(datetime,’internal’) ; — ‘%Y%m%d%H%i%s’
select get_format(time,’usa’) ; — ‘%h:%i:%s %p’
select get_format(time,’jis’) ; — ‘%H:%i:%s’
select get_format(time,’iso’) ; — ‘%H:%i:%s’
select get_format(time,’eur’) ; — ‘%H.%i.%s’
select get_format(time,’internal’) ; — ‘%H%i%s’

MySQL get_format() 函数在实际中用到机会的比较少。

6. MySQL 拼凑日期、时间函数:makdedate(year,dayofyear), maketime(hour,minute,second)

select makedate(2001,31); — ’2001-01-31′
select makedate(2001,32); — ’2001-02-01′
select maketime(12,15,30); — ’12:15:30′

MySQL 时间戳(Timestamp)函数

1. MySQL 获得当前时间戳函数:current_timestamp, current_timestamp()

mysql> select current_timestamp, current_timestamp();
+——————————————+
| current_timestamp | current_timestamp() |
+——————————————+
| 2008-08-09 23:22:24 | 2008-08-09 23:22:24 |
+——————————————+

2. MySQL (Unix 时间戳、日期)转换函数:

unix_timestamp(),
unix_timestamp(date),
from_unixtime(unix_timestamp),
from_unixtime(unix_timestamp,format)

下面是示例:

select unix_timestamp(); — 1218290027
select unix_timestamp(’2008-08-08′); — 1218124800
select unix_timestamp(’2008-08-08 12:30:00′); — 1218169800
select from_unixtime(1218290027); — ’2008-08-09 21:53:47′
select from_unixtime(1218124800); — ’2008-08-08 00:00:00′
select from_unixtime(1218169800); — ’2008-08-08 12:30:00′
select from_unixtime(1218169800, ‘%Y %D %M %h:%i:%s %x’); — ’2008 8th August 12:30:00 2008′

3. MySQL 时间戳(timestamp)转换、增、减函数:

timestamp(date) — date to timestamp
timestamp(dt,time) — dt + time
timestampadd(unit,interval,datetime_expr) –
timestampdiff(unit,datetime_expr1,datetime_expr2) –

请看示例部分:

select timestamp(’2008-08-08′); — 2008-08-08 00:00:00
select timestamp(’2008-08-08 08:00:00′, ’01:01:01′); — 2008-08-08 09:01:01
select timestamp(’2008-08-08 08:00:00′, ’10 01:01:01′); — 2008-08-18 09:01:01
select timestampadd(day, 1, ’2008-08-08 08:00:00′); — 2008-08-09 08:00:00
select date_add(’2008-08-08 08:00:00′, interval 1 day); — 2008-08-09 08:00:00
MySQL timestampadd() 函数类似于 date_add()。
select timestampdiff(year,’2002-05-01′,’2001-01-01′); — -1
select timestampdiff(day ,’2002-05-01′,’2001-01-01′); — -485
select timestampdiff(hour,’2008-08-08 12:00:00′,’2008-08-08 00:00:00′); — -12
select datediff(’2008-08-08 12:00:00′, ’2008-08-01 00:00:00′); — 7
MySQL timestampdiff() 函数就比 datediff() 功能强多了,datediff() 只能计算两个日期(date)之间相差的天数。

MySQL timestampdiff() 函数就比 datediff() 功能强多了,datediff() 只能计算两个日期(date)之间相差的天数。

MySQL 时区(timezone)转换函数convert_tz(dt,from_tz,to_tz)

select convert_tz(’2008-08-08 12:00:00′, ‘+08:00′, ‘+00:00′); — 2008-08-08 04:00:00
时区转换也可以通过 date_add, date_sub, timestampadd 来实现。
select date_add(’2008-08-08 12:00:00′, interval -8 hour); — 2008-08-08 04:00:00
select date_sub(’2008-08-08 12:00:00′, interval 8 hour); — 2008-08-08 04:00:00
select timestampadd(hour, -8, ’2008-08-08 12:00:00′); — 2008-08-08 04:00:00

相关学习推荐:mysql教程(视频)

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer