1901 |
2155 |
0000 |
|
詳細説明
##datetime : 時刻日付型。形式は YYYY-mm-dd HH:ii:ss です。 、表現範囲は 1000 ~ 9999 です。ただし、値はゼロです (0000-00-00 00:00:00;
date: 日付は datetime の日付部分です。
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 です。
2 桁の年 (00 ~ 69 は 2000 ~ 2069 年を意味し、70 ~ 99 は 1970 ~ 1999 年を意味します)。アプリケーションが年のみを記録する必要がある場合、年は日付よりも多くのスペースを節約しますSQL ステートメントの例create table my_date(
d1 datetime,
d2 date,
d3 time,
d4 timestamp,
d5 year
)charset utf8;
desc my_date 以下の図に示すように、年のデフォルトは 4 桁、つまり YYYY です。タイムスタンプを空にすることはできません。デフォルト値では、新しいレコードの作成時および既存のレコードの変更時にこのデータ列が更新されます。
# 次のように複数のデータを挿入し、時間通りに差分分析を実行します: 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
##タイムスタンプ フィールド デフォルトでは、現在のレコードが更新される限り、このフィールドは自動的に現在の時刻に更新されます。 update my_date set d1 = SYSDATE() where d5=69;
select * from my_date
では、MySQL は実際のタイムスタンプを取得できるのでしょうか?もちろん! select UNIX_TIMESTAMP();
テスト例
4.1 現在時刻のクエリ#SELECT SYSDATE() from dual;
4.2 現在の時刻を上記の種類の列に挿入します。 insert INTO `user` (name,number,date,datetime,timestamp,time,year)
VALUES (
'Loum',3,SYSDATE(),SYSDATE(),SYSDATE(),SYSDATE(),2016
);
4.3 datetime 型の長さビットmysql の数値
は次のとおりです。通常、MySQL の日時型の長さはデフォルトで 0 になるように設計されています: `work_time` datetime(0) DEFAULT NULL COMMENT '清收时间', 一般的な時刻形式は通常 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 '清收时间', この時、MySQLでは次のように表示されます:
2020-08-29 12:52:16.012020-08-29 12:52 :16.014057
最後に小数点があり、小数点以下の数字が対応する数字に対応していることがわかります。これはナノ秒と呼ばれます。
要約は次のとおりです:
date : 日付のみ、時刻は含まれません; -
datetime : 時間と日付があります; -
time : 時間のみ、分と秒まで正確です; -
timestamp : タイムスタンプ、分と秒まで正確; -
year : 年、など2002として、2002-01-15と書かれていれば計算が行われ、挿入結果は1986-
#[2] 日時型の書式 ## DATE_FORMAT( ) 関数
date_format() 関数を使用して時刻を変換できます。 rreeee
date_format( ) 转换格式
格式 |
描述 |
%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) |
%p |
AM 或 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'
) |