从MYSQL日期中取出破折号
这是我的情况。 我正在通过php文件发送记录到数据库。然后我用now()设置日期字段。它以这种格式添加日期:2013-08-01从MYSQL日期中取出破折号
然后我将数据库导出到csv。它一切正常。但是,当我将它导出到csv时,我需要拿出破折号。所以我需要它阅读:20130801
有没有办法做到这一点?这里是我输出为csv代码:
$from = $_REQUEST['from']; $to = $_REQUEST['to']; 
$filename = "APGE_ELEC_" . $to; 
header('Content-Disposition: attachment; filename="'.$filename.'".csv"'); 
    $hostname = ""; //SET SERVER/HOSTNAME 
    $dbusername = ""; //SET DATABASE USERNAME 
    $dbname = ""; //SET DATABASE NAME 
    $dbpassword = ""; //SET DATABASE USERNAME 
$dbhandle = mysql_connect($hostname, $dbusername, $dbpassword) 
    or die("Unable to connect to MySQL"); 
$selected = mysql_select_db($dbname,$dbhandle) 
    or die("Could not select Data Base"); 
//$query = "SELECT * FROM v88374 WHERE ((date >= '$from') AND (date <= '$to'))"; 
$query = "SELECT * FROM v88374 WHERE date >= DATE_FORMAT('" . $from . "', '%Y%m%d') AND date <= DATE_FORMAT('" . $to . "', '%Y%m%d')"; 
//$query = "SELECT * FROM v88374 WHERE date >= DATE_FORMAT($from) AND date <= DATE_FORMAT($to)"; 
$export = mysql_query ($query) or die ("Sql error : " . mysql_error()); 
$fields = mysql_num_fields ($export); 
for ($i = 0; $i < $fields; $i++) 
{ 
    $header .= mysql_field_name($export , $i) ."|" . "\t"; 
} 
while($row = mysql_fetch_row($export)) 
{ 
    $line = ''; 
    foreach($row as $value) 
    {            
     if ((!isset($value)) || ($value == "")) 
     { 
      $value = "\t"; 
     } 
     else 
     { 
      $value = str_replace('"' , '""' , $value); 
      $value = $value . '|' . "\t"; 
     } 
     $line .= $value; 
    } 
    $data .= trim($line) . "\n"; 
} 
$data = str_replace("\r" , "" , $data); 
if ($data == "") 
{ 
    $data = "\n(0) Records Found!\n"; 
} 
print "$header\n$data"; 
exit(); 
$ to和$ from是用于在数据库中搜索日期范围的参数。所以我们可以独自离开。
回答:
您需要选择格式化的时间
$query = "SELECT *, DATE_FORMAT(date,"%Y%m%d") FROM v88374 WHERE date >= DATE_FORMAT('" . $from . "', '%Y%m%d') AND date <= DATE_FORMAT('" . $to . "', '%Y%m%d')"; 回答:
您可以像使用引号一样使用str_replace(),但将其修改为破折号,将其替换为空字符串。
$value = str_replace('-' , '' , $value); 虽然这会带来一些危险。如果您有其他使用破折号的数据类型呢?他们会被损坏。另一种选择是在删除短划线之前,使用explode()和checkdate()以确保它是date。例如:
$dt = explode("-", $value); // Yields array([0] => 2013, [1] => 08, [2] => 01) // checkdate(int month, int day, int year) 
if (checkdate($dt[1], $dt[2], $dt[0])) { 
    // It's a date. 
    $value = str_replace('-','',$value); 
} 
回答:
$newDate = str_replace('-', '', $oldDate) 这就是你想要的?
另外PHP提供了一些真棒日期格式设置功能:http://php.net/manual/en/function.date.php
回答:
$date="2013-08-01"; $converted_date=date("Ymd", strtotime($date)); 
回答:
SELECT DATE_FORMAT(datefield, '%Y%m%d') ,如果你想直接在数据库中做到这一点。
回答:
我倾向于更喜欢更多的面向对象方法。这样,如果您需要更改格式,您可以轻松修改它。
$date = new DateTime($date_from_mysql);  echo $date->format('Ymd'); // Or adjust the format how you like 
当然,您不应该使用已弃用的ext/mysql扩展名用于新项目。
以上是 从MYSQL日期中取出破折号 的全部内容, 来源链接: utcz.com/qa/257550.html






