バッチ変更時間とバッチ時間タイプ変換
1、datetimeタイプ日付増加/減少
UPDATE table_name SET col_name=DATE_ADD(INTERVAL number DAY)/DATE_SUB(INTERVAL number DAY);
--
day:日hour:時間minute:分second:秒microsecond:ミリ秒
week:周month:月quarter:季year:年
2、datetimeタイプをintタイプタイムスタンプに変換する
ALTER TABLE table_name ADD {COLUMN} col_name;
UPDATE table_name SET col_name=UNIX_TIMESTAMP(col_name1);
3、タイムスタンプをdatetimeタイプに変換する
ALTER TABLE table_name ADD {COLUMN} col_name;
UPDATE table_name SET col_name=FROM_UNIXTIME(col_name1);
4、タイムスタンプ--時間の増減
TIMESTAMPADD(unit,interval,datetime_expr):この機能を実現できる
day:日hour:時間minute:分second:秒microsecond:ミリ秒
week:周month:月quarter:季year:年
5、datetimeタイプ時間の増加/減少日、時、分、秒
DATE_ADD/SUB(date,INTERVAL expr unit)--data:計算する時間;INTERVAL:キーワード;expr:式;unit:計算単位
expr unit式と計算方法の詳細
'5:10' HOUR_MINUTE--5時間10分
'1:5:2' HOUR_SECOND--1時間5分2秒
'1 1:5:10' DAY_SECOND--1日1時間5分10秒
注意:「日」と「時間」の間にスペースが分かれています.DAY_SECOND:DAY-計算の開始時間単位、SECOND-計算の終了時間単位
もう1つの実装方法:
time±INTERVAL expr unit--time:計算する時間;INTERVAL:キーワード;expr:式;unit:計算単位
UPDATE table_name SET col_name=DATE_ADD(INTERVAL number DAY)/DATE_SUB(INTERVAL number DAY);
--
day:日hour:時間minute:分second:秒microsecond:ミリ秒
week:周month:月quarter:季year:年
UPDATE nb_alarm_status SET create_date = DATE_ADD(create_date,INTERVAL 5 DAY); -- 5 ; -5: -5 , 5
UPDATE nb_alarm_status SET create_date = DATE_SUB(create_date,INTERVAL 6 DAY); -- 6 ; -6: -6 , 6
2、datetimeタイプをintタイプタイムスタンプに変換する
ALTER TABLE table_name ADD {COLUMN} col_name;
UPDATE table_name SET col_name=UNIX_TIMESTAMP(col_name1);
ALTER TABLE nb_alarm_status CREATE create_time_stamp INT(20) DEFAULT NULL; -- , , column ; , ;
UPDATE nb_alarm_status SET create_time_stamp=UNIX_TIMESTAMP(create_date); -- datetime int
3、タイムスタンプをdatetimeタイプに変換する
ALTER TABLE table_name ADD {COLUMN} col_name;
UPDATE table_name SET col_name=FROM_UNIXTIME(col_name1);
ALTER TABLE nb_alarm_status ADD tt datetime DEFAULT NULL; -- datetime ; , ;
UPDATE nb_alarm_status SET tt=FROM_UNIXTIME(create_time_stamp); -- datetime
4、タイムスタンプ--時間の増減
TIMESTAMPADD(unit,interval,datetime_expr):この機能を実現できる
day:日hour:時間minute:分second:秒microsecond:ミリ秒
week:周month:月quarter:季year:年
UPDATE nb_alarm_status SET create_time_stamp=UNIX_TIMESTAMP(TIMESTAMPADD(DAY,3,FROM_UNIXTIME(create_time_stamp))); -- , 3 ; create_date_stamp datetime
5、datetimeタイプ時間の増加/減少日、時、分、秒
DATE_ADD/SUB(date,INTERVAL expr unit)--data:計算する時間;INTERVAL:キーワード;expr:式;unit:計算単位
expr unit式と計算方法の詳細
'5:10' HOUR_MINUTE--5時間10分
'1:5:2' HOUR_SECOND--1時間5分2秒
'1 1:5:10' DAY_SECOND--1日1時間5分10秒
注意:「日」と「時間」の間にスペースが分かれています.DAY_SECOND:DAY-計算の開始時間単位、SECOND-計算の終了時間単位
SELECT DATE_ADD('2019-03-21 15:03:04',INTERVAL '1:5:2' HOUR_SECOND), -- 1 5 2
DATE_ADD('2019-03-21 15:03:04',INTERVAL '10:15' MINUTE_SECOND), -- 10 15
DATE_ADD('2019-03-21 15:03:04',INTERVAL '1 10:15' DAY_MINUTE); -- 1 10 15
--> 2019-03-21 16:08:06
--> 2019-03-21 15:13:19
--> 2019-03-23 01:18:04
SELECT DATE_SUB('2019-03-21 15:03:04',INTERVAL '1:5:2' HOUR_SECOND), -- 1 5 2
DATE_SUB('2019-03-21 15:03:04',INTERVAL '10:15' MINUTE_SECOND), -- 10 15
DATE_SUB('2019-03-21 15:03:04',INTERVAL '1 10:15' DAY_MINUTE); -- 1 10 15
--> 2019-03-21 13:58:02
--> 2019-03-21 14:52:49
--> 2019-03-20 04:48:04
もう1つの実装方法:
time±INTERVAL expr unit--time:計算する時間;INTERVAL:キーワード;expr:式;unit:計算単位
SELECT ('2019-04-02 14:19:51' + INTERVAL 2 HOUR),
('2019-04-02 14:19:51' + INTERVAL '2:10' HOUR_MINUTE),
('2019-04-02 14:19:51' + INTERVAL '1 2:10' DAY_MINUTE),
('2019-04-02 14:19:51' - INTERVAL 2 HOUR),
('2019-04-02 14:19:51' - INTERVAL '2:10' HOUR_MINUTE),
('2019-04-02 14:19:51' - INTERVAL '1 2:10' DAY_MINUTE);
--> 2019-04-02 16:19:51
--> 2019-04-02 16:29:51
--> 2019-04-03 16:29:51
--> 2019-04-02 12:19:51
--> 2019-04-02 12:09:51
--> 2019-04-01 12:09:51