datetime如何转为bigint
1、用Power Shell或cmd进入mysql,登陆后选择一个数据库,创建表dt_to_bi。
创建表的sql语句和表结构如图。
2、接着向表dt_to_bi插入一条数据,插入后,datetime字段的值是当前时间,bigint字段的值为NULL。
3、接着写更新的sql语句,将datetime转为bigint后更新表数据。
将datetime转为bigint使用的是mysql的内置函数unix_timestamp()。
更新数据后,结果如图调叮随。
4、然后再插入一条数据,插入的sql语句和插入后的数据如图。
插入后可以计算出,dt字段的差值为3分27秒,bi字段的差值为207,
刚好为(3*60+27),说明unix_timestamp函数将日期转换为bigint,返回值是以秒为单位的。
5、如图使用from_unixtime()函数可以将bigint值转换为日期。
6、最后说一下unix_timestamp()和rom_unixtime()这两个函数是怎么对datetime和bigint进行转换的。
先做个测试,在mysql中输入select from_unixtime(0); ,如图可以看到返回值是"1970-01-01 08:00:00"。
7、接着在mysql中输入select unix_timestamp(60); ,如图可以看丽伐到返回值是"1970-01-01 08:01:00"。
8、再接着再输入select from_unixtime('1970-01-01 08:01:00'); , 如图可以看到返回值是60。
9、最后测试负值和在"1970-01-08:00:00"之前的值,结果如图。
经过上面的测试迅胆,可以看出
unix_timestamp()和from_unixtime()在进行转换时是把"1970-01-08:00:00"当作开始的时间。
unix_timestamp(datetime)是将参数datetime转换成从"1970-01-08:00:00"起到datetime之间的差值,单位是秒。
from_unixtime(bigint)是从"1970-01-08:00:00"开始加上传入的参数值,从而将整型值转换成日期。
from_unixtime()传入的参数不允许为负值,如图传入负值返回的是NULL。
unix_timestamp()传入的参数不能在"1970-01-08:00:00"之前,在"1970-01-08:00:00"之前的值,返回值为0。