Maison > base de données > tutoriel mysql > le corps du texte

Résumé des types de date et d'heure et des méthodes de formatage dans MySQL

WBOY
Libérer: 2022-08-19 13:41:16
avant
3660 Les gens l'ont consulté

Cet article vous apporte des connaissances pertinentes sur mysql Il présente principalement les types de date et d'heure et les méthodes de formatage dans MySQL. Plusieurs types d'heure couramment utilisés dans MySQL sont : date, datetime, time, year, timestamp, jetons un coup d'œil à. ça, j'espère que cela sera utile à tout le monde.

Résumé des types de date et d'heure et des méthodes de formatage dans MySQL

Apprentissage recommandé : Tutoriel vidéo MySQL

[1] Types de date et d'heure dans MySQL

Plusieurs types d'heure couramment utilisés dans MySQL sont : date, dateheure, heure, année, horodatage

9999-12-310000-00-000000-00-00 00:00: 00année

Explication détaillée

  • datetime  : Type de date et d'heure, le format est AAAA-mm-jj HH:ii:ss, la plage est de 1000 à 9999. Mais il existe une valeur nulle, 0000-00-00 00:00:00 ; datetime : 时间日期型,格式是YYYY-mm-dd HH:ii:ss,表示的范围是从1000到9999。但是有零值,0000-00-00 00:00:00;
  • date:日期,就是datetime中的date部分;
  • time:时间(段),指定的某个区间之间,从-时间到+时间(有负时间表示);
  • timestamp:时间戳,并不是常规意义时间戳(如:14253685),范围是’1970-01-01 00:00:00’到2037年。格式为YYYY-mm-dd HH:ii:ss,格式与datetime完全一致;
  • year:yy和yyyy,yyyy的范围是1901-2155,yy的范围是1970-2069。

两位year(00-69表示2000-2069,70-99表示1970~1999)。当应用只需要记录年份时,year比date更省空间

 SQL语句实例

create table my_date(
	d1 datetime,
	d2 date,
	d3 time,
	d4 timestamp,
	d5 year
)charset utf8;
desc my_date
Copier après la connexion

如下图所示:year默认为4位,即YYYY; timestamp不能为空,有默认值,在创建新记录和修改现有记录的时候都对这个数据列刷新。

如下分别插入几条数据并对time做差异分析:

insert into my_date VALUES('2015-09-28 11:50:36','2015-09-28','11:50:54','2015-09-28 11:51:08','2015');
insert into my_date VALUES('2015-09-28 11:50:36','2015-09-28','-11:50:54','2015-09-28 11:51:08','2015');-- -11
insert into my_date VALUES('2015-09-28 11:50:36','2015-09-28','-211:50:54','2015-09-28 11:51:08','2015');-- -2 11
insert into my_date VALUES('2015-09-28 11:50:36','2015-09-28','-2 11:50:54','2015-09-28 11:51:08','2015');-- -2过去两天
#year用69标识-2069
insert into my_date VALUES('2015-09-28 11:50:36','2015-09-28','11:50:54','2015-09-28 11:51:08','69');-- 69
#year用70标识-1970
insert into my_date VALUES('2015-09-28 11:50:36','2015-09-28','11:50:54','2015-09-28 11:51:08','70');-- 70
Copier après la connexion

timestamp字段

默认情况下只要当前所在的记录被更新,该字段一定会自动更新成当前时间。

update my_date set d1 = SYSDATE() where d5=69;
select * from my_date
Copier après la connexion

那么MySQL可以拿到真正的时间戳吗?当然可以!

select UNIX_TIMESTAMP();
Copier après la connexion

测试实例

4.1 查询当前时间

SELECT SYSDATE() from dual;
Copier après la connexion

4.2 将当前时间插入以上几种类型列中

insert INTO `user` (name,number,date,datetime,timestamp,time,year)
VALUES (
'Loum',3,SYSDATE(),SYSDATE(),SYSDATE(),SYSDATE(),2016
);
Copier après la connexion

4.3 mysql中datetime类型的长度位数

如下所示,通常我们MySQL中设计datetime类型长度都默认为0:

`work_time` datetime(0) DEFAULT NULL COMMENT '清收时间',
Copier après la connexion

这时插入时间通常会是我们常见到的:2020-08-29 12:52:16格式。但是如果datetime(n)中的n不为0呢?

`work_time` datetime(2) DEFAULT NULL COMMENT '清收时间',
# datetime(n)中的n最大值为6
`work_time` datetime(6) DEFAULT NULL COMMENT '清收时间',
Copier après la connexion

这时在MySQL中会分别显示如下:

2020-08-29 12:52:16.01
2020-08-29 12:52:16.014057

会发现最后有一个小数点且小数点后面会分别对应相应位数的数字–这称之为纳秒。

总结如下:

  • date : 只有日期,没有时间;
  • datetime:有时间,有日期;
  • time:只有时间 ,精确到分秒 ;
  • timestamp:时间戳,精确到分秒;
  • year
  • date : date, qui est la partie date de datetime ; heure (segment ), entre un intervalle spécifié, de - heure à + heure (représentée par une heure négative)

timestamp : horodatage, pas un horodatage conventionnel (tel que : 14253685), la plage est ' 1970-01-01 00:00:00' à 2037. Le format est AAAA-mm-jj HH:ii:ss,

Le format est complètement cohérent avec datetime

année : aa et aaaa, la plage de aaaa est 1901-2155, et le La plage de yy est de 1970 à 2069.

Année à deux chiffres (00-69 signifie 2000-2069, 70-99 signifie 1970~1999). Lorsque l'application n'a besoin d'enregistrer que l'année, l'année économise plus d'espace que la date

Exemple d'instruction SQL

SELECT DATE_FORMAT(SYSDATE(),'%Y-%m-%d %H:%i:%s') from dual;
Copier après la connexion

Comme le montre la figure ci-dessous : l'année est par défaut à 4 chiffres, ce qui correspond à AAAA et l'horodatage ne peut pas être vide ; et a une valeur par défaut. Cette colonne de données est actualisée lors de la création de nouveaux enregistrements et de la modification d'enregistrements existants.

🎜Insérez plusieurs données et comparez l'heure comme suit Faites une analyse de différence : 🎜
str_to_date(
	'2016-12-15 16:48:40',
	'%Y-%m-%d %H:%i:%S'
)
Copier après la connexion
Copier après la connexion
🎜🎜🎜🎜

champ d'horodatage

🎜Par défaut, comme tant que l'emplacement actuel. Lorsque l'enregistrement est mis à jour, ce champ sera automatiquement mis à jour à l'heure actuelle. 🎜rrreee🎜🎜🎜 Ensuite, MySQL peut obtenir le Poke en temps réel ? bien sûr! 🎜rrreee🎜🎜

🎜Exemple de test🎜🎜🎜4.1 Interroger l'heure actuelle🎜🎜rrreee🎜 🎜 🎜🎜4.2 Insérez l'heure actuelle dans les types de colonnes ci-dessus🎜🎜rrreee🎜🎜🎜🎜4.3 Le nombre de chiffres dans la longueur du type datetime dans mysql 🎜🎜🎜 est le suivant. Habituellement, la longueur du type datetime dans MySQL est conçue pour être 0 par défaut : 🎜rrreee🎜At cette fois, l'heure d'insertion est généralement ce que l'on voit souvent au format :2020-08-29 12:52:16. Mais que se passe-t-il si n dans datetime(n) n’est pas 0 ? 🎜rrreee🎜À ce moment, il sera affiché comme suit dans MySQL : 🎜
🎜2020-08-29 12:52:16.01🎜2020-08-29 12:52:16.014057🎜
🎜Vous trouvez qu'il y en a un à la fin. Le point décimal et le nombre de chiffres après le point décimal correspondent au nombre de chiffres – c'est ce qu'on appelle une nanoseconde. 🎜🎜🎜Le résumé est le suivant : 🎜🎜🎜🎜date  : uniquement la date, pas d'heure ; 🎜🎜datetime : l'heure, mais la date 🎜🎜heure ; code> : heure uniquement, précise en minutes et secondes ; 🎜🎜timestamp : horodatage, précis en minutes et secondes 🎜🎜year : année, telle que 2002, s'il est écrit comme 2002 -01-15, le calcul sera effectué et le résultat de l'insertion est 1986🎜🎜🎜【2】Formatage du type date et heure 🎜🎜🎜🎜 Fonction DATE_FORMAT( ) 🎜🎜🎜🎜 Vous pouvez utiliser la fonction date_format( ) fonction pour convertir le temps. 🎜rrreee🎜🎜🎜

date_format( ) 转换格式

Données type occupe des octets valeur minimale valeur maximale valeur zéro signifie
datetime 8 1000-01-01 00:00:00 9999-12-31 23:59:59
horodatage 19700101080001 9:59 00:00:00
1 1901 2155 0000
格式描述
%a缩写星期名
%b缩写月名
%c月,数值
%D带有英文前缀的月中的天
%d月的天,数值(00-31)
%e月的天,数值(0-31)
%f微秒
%H小时 (00-23)
%h小时 (01-12)
%I小时 (01-12)
%i分钟,数值(00-59)
%j年的天 (001-366)
%k小时 (0-23)
%l小时 (1-12)
%M月名
%m月,数值(00-12)
%pAM 或 PM
%r时间,12-小时(hh:mm:ss AM 或 PM)
%S秒(00-59)
%s秒(00-59)
%T时间, 24-小时 (hh:mm:ss)
%U周 (00-53) 星期日是一周的第一天
%u周 (00-53) 星期一是一周的第一天
%V周 (01-53) 星期日是一周的第一天,与 %X 使用
%v周 (01-53) 星期一是一周的第一天,与 %x 使用
%W星期名
%w周的天 (0=星期日, 6=星期六)
%X年,其中的星期日是周的第一天,4 位,与 %V 使用
%x年,其中的星期一是周的第一天,4 位,与 %v 使用
%Y年,4 位
%y年,2 位

str_to_date()函数

字符串转换为date:

str_to_date(
	'2016-12-15 16:48:40',
	'%Y-%m-%d %H:%i:%S'
)
Copier après la connexion
Copier après la connexion

推荐学习: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!

Étiquettes associées:
source:jb51.net
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal