表        名:zixun_content
发表时间字段:inputtime
文章状态字段:status
-------------------------------------
我想在zixun_content表中,将文章字段status=3的所有文章的 时间字段inputtime中的2010-11-11替换成2010-11-12
而inputtime字段在PHPMYADMIN中的显示方式为24小时的时间戳 例如:1289404800正因为inputtime字段在PHPMYADMIN中显示的方式为时间戳,所以我不知道应该怎么去替换我提供2个时间戳:
1、2010-11-11的时间戳为  1289404800
2、2010-11-12的时间戳为  1289491200是否在替换的时候将12894048替换成12894912就可以,还是怎么样?因为是24小时的时间戳,所以后面两个0不能替换。
如果望知道的朋友,能帮忙写个替换sql语句  感激不尽  谢谢~~~!!!

解决方案 »

  1.   

    你确定,时间戳没错???看意思,是插入时间修改前先备份吧UPDATE zixun_content SET inputtime='1289491200' WHERE status=3 AND inputtime='1289404800'
      

  2.   

    update 表名 set 字段名=replace(字段名,'原来的内容','替换后的内容')怎么加入status=3的判断  status字段值3的意思是为审核的文章。怎么加入呢?
      

  3.   

    UPDATE zixun_content SET inputtime='1289491200' WHERE status=3 AND inputtime='1289404800'后面的两个0  应该不能替换的吧  因为是24小时的时间戳
      

  4.   

    你是更新整个字段的内容 用一楼给出的就可以了
    加入条件 不就是 where status=3
      

  5.   

    UPDATE zixun_content SET inputtime='1289491200' WHERE status=3 AND inputtime='1289404800'请问你这语句里面的inputtime=''分别位置的意思是?
    1289404800的位置意思是?
    1289491200的位置意思是?
      

  6.   

    UPDATE zixun_content SET inputtime='12894912' WHERE status=3 AND inputtime='12894048'为什么我这样执行  什么效果都没有啊   数据没有改变啊
      

  7.   

    嗯~嗯~~嗯~~~是的是的  有道理  我也是这么想的
    可是24小时的时间戳  所得inputtime的值都不一至
    但如果按照UPDATE zixun_content SET inputtime='1289491200' WHERE status=3 AND inputtime='1289404800'这样写的话,那么inputtime='1289404800'的值仅此一个而已,那怎么又能达到批量替换的要求呢?
      

  8.   

    能否写出一个sql语句强行批量清空inputtime的值
    然后,再重新置入一个新值呢?
      

  9.   

    UPDATE 表 WHERE status=3 SET inputtime=REPLACE(inputtime, '1289491200', '1289404800');
    能否这样写呢?
      

  10.   

    楼主是想要2010-11-11这天24小时内发布的所有文章都变成2010-11-12这天的吧,楼主没有说明白啊
    你看看这样是不是你想要的,如果不是麻烦在把条件说清楚点
    UPDATE zixun_content SET inputtime=inputtime+86400 WHERE status=3 AND inputtime>=1289404800 AND inputtime<1289491200
      

  11.   

    你的mysql中设计的字段类型是int的话,替换语句1楼就对了。
    给你个我写的日期转换成时间戳的函数
    function timestamp($timestr) {
    if (empty($timestr))return 0;
    $tmp = explode(' ', $timestr);
    list($year, $month, $day) = split ('-', $tmp[0]);
    $tmp = explode(':', $tmp[1]);
    $cnt = count($tmp);
    $hours = intval($tmp[0]);
    $minutes = $cnt > 1 ? intval($tmp[1]) : 0;
    $seconds = $cnt > 2 ? intval($tmp[2]) : 0;
    $timestamp = mktime($hours, $minutes, $seconds, $month, $day, $year);
    return $timestamp;
    }
      

  12.   

    服你了,LZ。。那句根本就是你自己写的
    仔细看看别人的回复吧。。inputtime加上索引
      

  13.   

    改进了下function timestamp($timestr) {
    if (empty($timestr))return 0;
    $tmp = explode(' ', $timestr);
    list($year, $month, $day) = explode('-', $tmp[0]);
    $tmp = isset($tmp[1]) ? explode(':', $tmp[1]) : '';
    $hours = isset($tmp[0]) ? intval($tmp[0]) : 0;
    $minutes = isset($tmp[1]) ? intval($tmp[1]) : 0;
    $seconds = isset($tmp[2]) ? intval($tmp[2]) : 0;
    $timestamp = mktime($hours, $minutes, $seconds, $month, $day, $year);
    return $timestamp;
    }貌似结果跟楼主的不一样
      

  14.   

    inputtime 的字段类型是  int(10)  是这个么?
      

  15.   

    那你看看数据库里的记录,inputtime字段里还有没有符合大于等于1289404800小于1289491200的记录存在,如果没有就说明你没有一条记录的时间是在2010-11-11日的
      

  16.   

    SELECT * FROM zixun_content WHERE status=3 AND inputtime>=1289404800 AND inputtime<1289491200
    看能找出多少数据,有的话那个UPDATE的语句也应该不会有问题的啊