mysql中datetime格式是什么呢?不知道的小伙伴来看看小编今天的分享吧!
mysql中datetime格式是:yyyy-MM-dd HH:mm:ss
例如:2021-10-31 00:00:00 2021-10-31 08:00:00
拓展资料:
mysql datetime与timestamp区别
datetime:
1、保存格式为YYYYMMDDHHMMSS(年月日时分秒)的整数,所以,它与时区无关,存入的是什么值就是什么值,不会根据当前时区进行转换。
2、从mysql 5.6.4中,可以存储小数片段,最多到小数点后6位,显示时格式为 yyyy-MM-dd HH:mm:ss[.222222]
mysql5.5中,没有小数片段,精确到秒。所以,我再从5.6版本迁移到5.5时,因生成的sql中datetime(6)有小数片段,无法导入。
3、存储范围:从1000-01-01 00:00:00 到'9999-12-31 23:59:59'
4、长度,8个字节,datetime(n),n不是存储长度,而是显示的小数位数,即使小数位数是0,存储是也是存储的6位小数,仅仅显示0位而已;要想显示小数,设置datetime(n),n=3显示小数点后3位,毫秒,n=6显示小数点后6位,微秒。
timestamp:
1、存入的是自1970-01-01午夜(格林尼治标准时间)以来的秒数,它和unix时间戳相同。所以它与时区有关,查询时转为相应的时区时间。比如,存储的是1970-01-01 00:00:00,客户端是北京,那么就加8个时区的小时1970-01-01 08:00:00。
2、有小数片段,至少从5.5就开始有
3、存储范围:'1970-01-01 00:00:01' UTC to '2038-01-19 03:14:07'
4、可以当做时间戳使用,在更新时,自动更新,这一列只能由系统自动更新,不能由sql更新,这个在乐观锁时有广泛的应用
6、长度,4字节,因为存储长度的原因,决定了它支持的范围的比datetime的要小
7、显示时,显示日期和时间
datetime和timestamp都可以当作时间戳使用
datetime和timestamp都可以设置默认值,并且在其他列值更新时更新为当前时间,DEFAULT CURRENT_TIMESTAMP和ON UPDATE CURRENT_TIMESTAMP,这俩子句可以一起使用,顺序无所谓,一起使用的意思是,默认值是当前时间并且在其他列更新值时,此列更新为当前时间。
ALTER TABLE `mytest`.`date_time_test`
CHANGE COLUMN `col2` `col2` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ;
date
date,时分秒都存储了,但只显示日期。对应Java中的java.sql.Date
datetime与时区无关、timestamp与时区有关
1、查看当前时区,并创建表test_date,一个是timestamp列,一个是datetime列
2、插入两条数据,相同的时间。修改时区为0时区(格林尼治时区)后,查看时间,发现timestamp改变了,datetime没变。
以上就是小编今天的分享了,希望可以帮助到大家。
MySQL-日期时间类型比较、互转
【原理】日期、时间类型比较
比较的是时间戳,即long型
【原理】日期、时间类型和字符串比较
当涉及日期类型、时间类型和字符串类型比较时,会先将字符串转换成日期、时间类型,然后进行比较;
例如: date_col < "2020-09-01" ,date_col是date类型,在比较时,会先将"2020-09-01"转换成date类型,然后再比较
【常用日期和时间处理函数】
AddDate():增加一个日期(天、周等)
AddTime():增加一个是时间(时、分等)
Now():返回当前日期和时间
CurDate():返回当前日期
CurTime():返回当前时间
Date():返回日期时间的日期部分
DateDiff():计算两个日期之差
-语法: datediff(string enddate, string startdate)。返回结束日期减去开始日期的天数
Date_Add():高度灵活的日期运算函数
Date_Sub(): 返回两个日期之间的间隔
-语法: date_sub (string startdate, int days)。 返回开始日期startdate减少days天后的日期。
Date_Format():返回一个格式化的日期或时间串
DayOfWeek():对于一个日期,返回对应的星期几,显示的一周是从周日开始周六结束,其中周日为1,周六为7
WeekDay(): 对于一个日期,返回对应的星期几,显示的一周是从周一开始周日结束,其中周一为0,周日为6
Time():返回一个日期时间的时间部分
Year():返回一个日期的年份部分
Month():返回一个日期的月份部分
Day():返回一个日期的天数部分
Hour():返回一个时间的小时部分
Minute():返回一个时间的分钟部分
Second():返回一个时间的秒数部分
【日期函数转换】
from_unixtime
语法: from_unixtime(bigint unixtime[, string format])。转化UNIX时间戳(从1970-01-01 00:00:00 UTC到指定时间的秒数)到当前时区的时间格式
2. 获取当前UNIX时间戳函数:(当前时间戳)
unix_timestamp
语法: unix_timestamp()。获得当前时区的UNIX时间戳
3. 日期转UNIX时间戳函数:(日期->时间戳)
unix_timestamp
语法: unix_timestamp(string date)。转换格式为"yyyy-MM-dd HH:mm:ss"的日期到UNIX时间戳。如果转化失败,则返回0。
4. 指定格式日期转UNIX时间戳函数:(指定日期格式化->时间戳)
unix_timestamp
语法: unix_timestamp(string date, string pattern)。转换pattern格式的日期到UNIX时间戳。如果转化失败,则返回0。
【日期格式化】
DATE_FORMAT() 函数用于以不同的格式显示日期/时间数据
【日期、时间戳、字符串互转】
涉及函数:
date_format(date,format)
unix_timestamp()
str_to_date(str,format)
from_unixtime(unix_timestamp,format)
1) 时间->字符串
date_format(now(0,"%Y-%m-%d")
2) 时间->时间戳
unix_timestamp(now())
3) 字符串-> 时间
str_to_date("2016-01-02","%Y-%m-%d %T")
4) 字符串-> 时间戳
unix_timestamp("2020-08-01")
5) 时间戳-> 时间
from_unixtime(1592755199)
6) 时间戳-> 字符串
from_unixtime(1592755199,"%Y-%m-%d")
【时间差函数】-timestampdiff、timediff、datediff
1.timestampdiff
语法:timestampdiff(interval, startDateTime,endDateTime)
结果:返回(endDateTime-startDateTime)的时间差,结果单位由interval参数给出。
interval 参数:
2. timediff
语法:timediff( Date1, Date2)
结果:返回DAY天数,Date1-Date2 的天数值,结果单位为day
3. datediff
语法:timediff(time1,time2)
结果:返回两个时间相减得到的差值,time1-time2,结果单位为Time类型
【案例-常用日期和时间处理函数】
select ADDDATE(NOW(),INTERVAL 1 DAY)
select ADDTIME(NOW(),"10:10:10")
select Now()
select CURDATE()
select CurTime()
select CURRENT_DATE()
select CURRENT_TIME()
select CURRENT_TIMESTAMP()
select DATE(now())
select DATEDIFF("2020-08-01","2020-08-20")
select DATE_ADD(NOW(),INTERVAL 1 DAY)
select DATE_FORMAT(NOW(),"%Y-%m-%d"),DATE_FORMAT(NOW(),"%y-%M-%D %T")
select DAYOFWEEK("2020-09-21"),WEEKDAY("2020-09-21")
select TIME(now())
select YEAR(now())
select month(now())
select DAY(now())
select Hour(now())
select Minute(now())
select second(now())