代码之家  ›  专栏  ›  技术社区  ›  TigerTiger

如何在mysql日期类型字段中插入空值?

  •  16
  • TigerTiger  · 技术社区  · 15 年前

    如何在MySQL日期类型字段中插入空值(空=是)。

    如果我试图插入一个空值,它会插入0000-00-00,但我想保持它为空或为空。

    谢谢你的帮助。

    更新

    请注意,我已将默认值设置为空

      `payment_due_on` date DEFAULT NULL,
    

    好奥克斯

    我已经开始工作了

    function get_mysqlDate($date, $delimiter='/') {
        if(check_empty($date)) {
            return 'NULL';
        }
        list($d, $m, $y) = explode($delimiter, $date);
        //$datetime = strtotime($date);
        return "'".date('Y-m-d', mktime(0,0,0,$m, $d, $y))."'";
    }
    
    
    
    
    "... SET mydate = ".get_mysqldate($_POST['mydate'])." ...."
    

    干杯

    3 回复  |  直到 15 年前
        1
  •  19
  •   chaos    15 年前

    如果发生这种情况,那是因为列是用 NOT NULL 或与 default '0000-00-00' . 您需要更改列定义以允许 NULL 没有违约。

    您的插入也应该指定为空,而不是 '' ,如果这就是你所说的“空值”。

        2
  •  2
  •   Vicer    15 年前

    呸…在和这个空的东西斗争。

    我有一个PHP脚本,可以将数据从一个数据库A复制、格式化并存储到数据库B中。数据库A中有一个日期字段,值为空。但当我复制它时,它在我的数据库B中变成了0000-00-00。

    最后,我发现这是因为我把单引号放在了空的周围,比如(“空”)。

    $started_date = mysql_result($databaseA['result'],$i,"start_date");
    
        if (empty($published_at_date)){
         $insert_sql .= "NULL,  ";
        } 
        else 
        {
         $insert_sql .= " '" . mysql_real_escape_string($started_date) ."', ";
        }
    

    这是固定的。

        3
  •  0
  •   Michal Gorecki    15 年前

    插入时省略字段。

    假设您的桌子是这样的:

    CREATE TABLE mytable(
    `name` VARCHAR(30) NOT NULL,
    `payment_due_on` date DEFAULT NULL);
    

    如果要插入不带日期的内容,请使用:

    INSERT INTO mytable (name) VALUES ('name here');