【问题标题】:Convert string to mysql date format before insert [duplicate]在插入之前将字符串转换为mysql日期格式[重复]
【发布时间】:2017-05-19 20:06:28
【问题描述】:


我有一个表单,用于上传 .csv 文件以在 mysql 表中插入数据。该文件有一个格式为“dd/mm/yyy”的日期列。但是我想以mysql日期格式“yyyy-mm-dd”插入这个日期字符串。到目前为止,我有以下代码。

//parse data from csv file line by line
        while(($line = fgetcsv($csvFile)) !== FALSE){
         //insert member data into database
         $db->query("INSERT INTO txns (txn_date, description, amount, status) VALUES ('".$line[0]."','".$line[1]."','".$line[2]."','".$line[3]."','".$line[3]."')");
            }
        }

        //close opened csv file
        fclose($csvFile);

请帮忙把日期字符串转换成mysql日期(yyyy-mm-dd)格式。

【问题讨论】:

  • 我们不要使用像 LOAD DATA INFILE 这样的内置功能,而是尝试重新发明轮子,同时让上传者有机会进行 sql 注入攻击。
  • @e4c5 嗯,你能让LOAD DATA INFILE 自动进行日期转换吗?
  • 取决于文本,是的@RiggsFolly 你可以做到

标签: php mysql date datetime


【解决方案1】:

你可以这样做:

$var = '05/01/2017';
$date = str_replace('/', '-', $var);
$result = date('Y-m-d', strtotime($date));

输出:2017-01-05。

【讨论】:

    【解决方案2】:

    试试这个:

    $date = date('Y-m-d', strtotime($line[0]));  
    // convert date to yyyy-mm-dd
    

    并使用 $date 作为列 txn_date

    的值

    【讨论】:

      【解决方案3】:
      // date in dd/mm/yyyy format
      $date = "05/01/2017"; 
      
      //Explode by / to get an array with day, month, year in separate indexes
      $dateArray = explode("/", $date); 
      
      //Concatenate year, month and day into any format you want. 
      $newDate = $dateArray[2] . "-" . $dateArray[1] . "-" . $dateArray[0]; 
      

      你可以为此做一个函数

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多