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)) //时间