国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

oracle --date-對應 mysql 時間類型的以及空值的處理

2024-07-24 12:35:52
字體:
來源:轉載
供稿:網友
  因為在做Oracle---->mysql的數據遷移的時候,發現Oracle中的date類型,對應的mysql的時間類型設置不當容易引起錯誤,特別是存在空值的時候
 
  mysql 版本 5.6.40版本
 
  mysql> desc t1;
  +-------------+-----------+------+-----+-------------------+-----------------------------+
  | Field | Type | Null | Key | Default | Extra |
  +-------------+-----------+------+-----+-------------------+-----------------------------+
  | id | int(11) | NO | PRI | NULL | auto_increment |
  | time_1 | time | YES | | NULL | |
  | date_2 | date | YES | | NULL | |
  | datetime_3 | datetime | YES | | NULL | |
  | timestamp_4 | timestamp | NO | | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
  +-------------+-----------+------+-----+-------------------+-----------------------------+
  5 rows in set (0.00 sec)
 
  可以插入當前的時間
 
  mysql> insert into t1 values(null,now(),now(),now(),now());
  Query OK, 1 row affected, 1 warning (0.00 sec)
 
  mysql> show warnings;
  +-------+------+--------------------------------------------------------------------------+
  | Level | Code | Message |
  +-------+------+--------------------------------------------------------------------------+
  | Note | 1292 | Incorrect date value: '2018-05-11 11:18:41' for column 'date_2' at row 1 |
  +-------+------+--------------------------------------------------------------------------+
  1 row in set (0.00 sec)
 
  提示date類型插入告警,但是依舊可以插入進去,因為date類型只記錄年月(yyyy-mm)
 
  Query OK, 1 row affected (0.01 sec)
 
  4個時間空值插入測試 ,time類型,插入0
 
  mysql> insert into t1 values (null,'0','2018-01-01','2018-01-01 12:12:12','2018-10-10 00:00:00');
  Query OK, 1 row affected (0.01 sec)
 
  mysql> select * from t1;
  +----+----------+------------+---------------------+---------------------+
  | id | time_1 | date_2 | datetime_3 | timestamp_4 |
  +----+----------+------------+---------------------+---------------------+
  | 1 | 22:21:23 | 2018-05-08 | 2018-05-08 22:21:23 | 2018-05-08 22:21:23 |
  | 2 | 22:21:54 | 2018-05-08 | 2018-05-08 22:21:54 | 2018-05-08 22:21:54 |
  | 3 | 00:00:00 | 2018-01-01 | 2018-01-01 12:12:12 | 2018-10-10 00:00:00 | time_1 自動填充為00:00:00
  | 4 | 00:00:00 | 2018-01-01 | 2018-01-01 12:12:12 | 2018-10-10 00:00:00 |
  +----+----------+------------+---------------------+---------------------+
  4 rows in set (0.00 sec)
 
  接著全部插入0,看是否能夠插入進去
 
  測試date類型---------------
  第三列為date類型
 
  mysql> insert into t1 values(null,'0','0','0','0'); 插入 0
  ERROR 1292 (22007): Incorrect date value: '0' for column 'date_2' at row 1
 
  mysql> insert into t1 values(null,'0','','0','0'); 插入‘ ’測試,留空白,測試插入
  ERROR 1292 (22007): Incorrect date value: '' for column 'date_2' at row 1
 
  mysql> insert into t1 values(null,'0','null','0','0'); 插入 null 測試
  ERROR 1292 (22007): Incorrect date value: 'null' for column 'date_2' at row 1
  -------------測試datetime類型--
  第四列為datetime類型
  mysql> insert into t1 values(null,'0',null,'0','0');
  ERROR 1292 (22007): Incorrect datetime value: '0' for column 'datetime_3' at row 1
  插入null成功
  ---------測試timestamp類型
  第五列為timestamp
  mysql> insert into t1 values(null,'0',null,null,'0');
  ERROR 1292 (22007): Incorrect datetime value: '0' for column 'timestamp_4' at row 1
  mysql> insert into t1 values(null,'0',null,null,null);
  Query OK, 1 row affected (0.00 sec)
 
  插入null 成功
 
  mysql> select * from t1;
  +----+----------+------------+---------------------+---------------------+
  | id | time_1 | date_2 | datetime_3 | timestamp_4 |
  +----+----------+------------+---------------------+---------------------+
  | 1 | 22:21:23 | 2018-05-08 | 2018-05-08 22:21:23 | 2018-05-08 22:21:23 |
  | 2 | 22:21:54 | 2018-05-08 | 2018-05-08 22:21:54 | 2018-05-08 22:21:54 |
  | 3 | 00:00:00 | 2018-01-01 | 2018-01-01 12:12:12 | 2018-10-10 00:00:00 |
  | 4 | 00:00:00 | 2018-01-01 | 2018-01-01 12:12:12 | 2018-10-10 00:00:00 |
  | 5 | 00:00:00 | NULL | NULL | 2018-05-08 22:33:22 |
  +----+----------+------------+---------------------+---------------------+
  5 rows in set (0.00 sec)
 
  總結 : Oracle數據庫的date類型和mysql的date類型是不一樣的,Oracle為yyyy-mm-dd hh:mi:ss和mysql中的datetime類型匹配, 而 mysql 為 yyyy-mm 。當在存在空值的時候,mysql的time 類型可以使用0零來插入,而date,datetime,timestamp可以使用null 來插入,但是timestamp即使為null,也會默認插入當前時間戳。

(編輯:武林網)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 克什克腾旗| 房产| 周至县| 梁山县| 康乐县| 邯郸市| 钦州市| 库车县| 宜阳县| 红原县| 观塘区| 广平县| 芮城县| 蛟河市| 四子王旗| 塔河县| 尉犁县| 汨罗市| 五常市| 白水县| 简阳市| 临湘市| 九龙县| 湘西| 大安市| 嵊州市| 石嘴山市| 扎赉特旗| 霍林郭勒市| 个旧市| 平谷区| 呼伦贝尔市| 如皋市| 乃东县| 祁东县| 外汇| 大埔区| 景东| 出国| 来宾市| 南昌县|