1. mysql字段與Java屬性類型對照表:
類型名稱 | 顯示長度 | 數據庫類型 | JAVA類型 | JDBC類型索引(int) | 描述 |
VARCHAR | L+N | VARCHAR | java.lang.String | 12 | |
CHAR | N | CHAR | java.lang.String | 1 | |
BLOB | L+N | BLOB | java.lang.byte[] | -4 | |
TEXT | 65535 | VARCHAR | java.lang.String | -1 | |
INTEGER | 4 | INTEGER UNSIGNED | java.lang.Long | 4 | |
TINYINT | 3 | TINYINT UNSIGNED | java.lang.Integer | -6 | |
SMALLINT | 5 | SMALLINT UNSIGNED | java.lang.Integer | 5 | |
MEDIUMINT | 8 | MEDIUMINT UNSIGNED | java.lang.Integer | 4 | |
BIT | 1 | BIT | java.lang.Boolean | -7 | |
BIGINT | 20 | BIGINT UNSIGNED | java.math.BigInteger | -5 | |
FLOAT | 4+8 | FLOAT | java.lang.Float | 7 | |
DOUBLE | 22 | DOUBLE | java.lang.Double | 8 | |
DECIMAL | 11 | DECIMAL | java.math.BigDecimal | 3 | |
BOOLEAN | 1 | 同TINYINT | |||
ID | 11 | PK (INTEGER UNSIGNED) | java.lang.Long | 4 | |
DATE | 10 | DATE | java.sql.Date | 91 | |
TIME | 8 | TIME | java.sql.Time | 92 | |
DATETIME | 19 | DATETIME | java.sql.Timestamp | 93 | |
TIMESTAMP | 19 | TIMESTAMP | java.sql.Timestamp | 93 | |
YEAR | 4 | YEAR | java.sql.Date | 91 |
2.date,datetime,timestamp的區別和相互轉換
date:你直接就可以理解爲2017-3-21 不帶時分秒的
datetime:相反,則是帶時分秒的
timestamp:時間戳 很好理解(1970年01月01日00時00分00秒(北京時間1970年01月01日08時00分00秒)起至現在的總秒數。)
其中有提到時間範圍的問題:
時間範圍
date -- > '1000-01-01' to '9999-12-31'.
datetime --> '1000-01-01 00:00:00' to '9999-12-31 23:59:59'.
timestamp -- > '1970-01-01 00:00:01' UTC to '2038-01-19 03:14:07' UTC
常用日期函數以及轉換
1、獲取當前日期:
CURRENT_DATE()或者CURDATE()
2、獲取當前時間:
CURRENT_TIME()或者CURTIME()
3、獲取當前日期和時間
NOW()或者CURRENT_TIMESTAMP()
4、linux/unix時間戳和mysql時間日期類型之間的轉換:
UNIX_TIMESTAMP(NOW()) //將mysql的datetime轉換成linux/unix的時間戳;日期時間
UNIX_TIMESTAMP(DATE(NOW())) //將mysql的date轉換成linux/unix的日期。
UNIX_TIMESTAMP(TIME(NOW())) //將mysql的time轉換成linux/unix的時間。(用問題)
FROM_UNIXTIME(time_t) //將unix的時間戳轉換成mysql的datetime;日期時間
DATE(FROM_UNIXTIME(time_t)) //日期
TIME(FROM_UNIXTIME(time_t)) //時間