整理MySQL中用到的日期时间相关的函数
#日期增加 DAY、MONTH、YEAR
select DATE_ADD(CURDATE(),INTERVAL 2 MONTH);
#日期减去 DAY、MONTH、YEAR
select DATE_SUB(CURDATE(),INTERVAL 2 YEAR);
#查询当前日期
select CURRENT_DATE();
#查询当前时间
SELECT CURRENT_TIME();
#获取当前日期时间
select NOW();
#获取当前日
select DAY(CURRENT_DATE);
#获取当前月
select MONTH(CURRENT_DATE);
#获取当前年
select YEAR(CURRENT_DATE);
日期、时间戳、字符串相互转换
#日期转字符串
select DATE_FORMAT(NOW(),'%Y-%m-%d %T');
#日期转时间戳
select UNIX_TIMESTAMP(NOW());
#字符串转日期
select STR_TO_DATE('2019-03-6 19:50:6','%Y-%m-%d %T');
#字符串转时间戳
select UNIX_TIMESTAMP('2017-1-1');
#时间戳转字符串
select FROM_UNIXTIME(1483204562,'%Y-%m-%d %T');
#时间戳转日期
select FROM_UNIXTIME(1583204562);
MySQL日期格式化(format)
查询MySQL数据库时遇到了这样的问题:
java.sql.SQLException:Value '0000-00-00' can not be represented as java.sql.Date
该错误是由于数据库中的日期类型字段的值为空,查询出结果后进行对日期字段进行转换导致的。网上查询了一下解决方案有两种:
方式一:driver-url=jdbc:mysql://127.0.0.1/test?zeroDateTimeBehavior=convertToNull(已验证)
读取的为空的日期字段会显示为null
方式二:driver-url=jdbc:mysql://127.0.0.1/test?noDatetimeStringSync=true (未验证)
读取为空的日期字段会显示为0000-00-00 00:00:00