你的位置:
问答吧
-> 数据库
-> 问题详情
请教:mysql中,如何将date字段转换为int字段?
刚开始设计数据库时候,没有想到date类型只能精确到某一天,不能精确到秒。
现在我想把这个date字段改为int(11)类型,我在phpmyadmin中直接修改的话,提示#1265 - Data truncated for column 'publish_date' at row 2
因为我这个表中已经有了数据,我不想删除。请问有没有办法。
谢谢了。
作者: changanti
发布时间: 2008-04-01
datetime类型可以插入到秒
另外int是整型,不能有数字外的任何符号,如果有则将丢失数据。
作者: kuhanzhu
发布时间: 2008-04-01
time()函数..
看下PHP手册..
不过表里的数据不想丢而要时间精确到秒.只有使用datetime类型
作者: wuleying
发布时间: 2008-04-01
谢谢两位的指点。
但是回答的好像不是我的问题,是我的问题没有描述清楚。再次描述下:
1. 我的mysql数据库中的一个表中字段类型为date,并且这个字段中已经插入了数据;
2. 我不想删除已经插入的数据的前提下,我想把这个字段类型由date修改为int类型,
请问如何做?请指点一下。
再次感谢。
作者: changanti
发布时间: 2008-04-01
或许尝试两步操作:
1、将数据库中已有的时间转成INT类型
2、全部转换完成之后将字段类型换成INT型
作者: 帅青蛙
发布时间: 2008-04-01
首先, 你的INT(11)应该改成INT(10)
INT最大为10位。
其次,你如果想把时间存为UNIX时间戳形式就直接设时间为 TIME INT(10) UNSIGNED NOT NULL DEFAULT 0,
在PHP处理程式中
$time=time(); 也就是要把时间转为UNIX时间戳形式。 这样存到数据库中就是1122334455的形式
在取出的时候用date函数格式化一下就OK 例如。 date('y-m-d',$time) 格式化时间为08-04-01
作者: laohoo
发布时间: 2008-04-01
明白了。谢谢。
作者: changanti
发布时间: 2008-04-01
建立个新表导数据吧 可以考虑使用insert into ... select ...的语法结构哦
在导入数据过程中将原来为date类型的字段使用mysql的unix_timestamp()函数处理下
如果数据量大 可能会很慢哦 建议使用命令行或客户端执行
作者: sanders
发布时间: 2008-04-01
转换一下datatime
作者: oklrc
发布时间: 2008-04-01
精确到秒的话直接把数据类型转化成datetime就好了,原本的数据只是多了00:00:00而已
作者: LenChi
发布时间: 2008-04-01