日付 |
4 | ##を意味します。 # 1000-01-01 | 9999-12-31 | 0000-00-00 |
日時 | 8 | 1000-01-01 00:00:00 | 9999-12-31 23:59:59 | 0000-00-00 00:00: 00 |
タイムスタンプ | 4 | 19700101080001 | 2038年のいつか | 0000000000000000 |
time | 3 | -838:59:59 | 838:59:59 | 00:00:00 |
##年
1 |
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- : タイムスタンプ、正確to minutes Seconds;
#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'
)
推荐学习:mysql视频教程