只需将此日期转换为正确的格式

只需将此日期转换为正确的格式

问题描述:

我有一个日期我需要存储在MySQL中的日期字段。我的字符串的格式如下:只需将此日期转换为正确的格式

24/02/2011 

虽然它需要进入的数据库:

2011-02-24 

我想我能做到这一点,像这样在SQL查询

STR_TO_DATE('.$_POST['start_date'].', \'%d,%m,%Y\') 

但它不喜欢它。

有没有另一种方法?

$parts = explode("/", $date); 
$date = $parts[2] . '-' . $parts[1] . '-' . $parts[0]; 

您的format看起来是错误的。在你的字符串中,这些部分用斜杠分隔,而不是逗号。所以,试试这个:

STR_TO_DATE('.$_POST['start_date'].', \'%d/%m/%Y\') 

另外,使用PHP:

$ary = strptime($date_string, '%d/%m/%Y'); 
$mysql_date = sprintf('%s-%s-%s', $ary['tm_year'], $ary['tm_mon'], $ary['tm_mday']); 

,或者你可以简单地做使用

$dob1=trim($_POST['txt_dob']);//$dob1='dd/mm/yyyy' format 
list($d, $m, $y) = explode('/', $dob1); 
$mk=mktime(0, 0, 0, $m, $d, $y); 
$dob_disp1=strftime('%Y-%m-%d',$mk); 

你可以在PHP中解决这个问题:

$date = date('Y-m-d', strtotime($_POST['start_date'])); 

我会改为推荐存储它作为一个时间戳,并让你的表示层处理这个逻辑,它不应该是你的数据库关心如何表示日期。

+0

我认为他知道,他希望它Y-M-d格式因为MySQL插入到DATE/DATETIME/TIMESTAMP列时接受字符串。它会直接将它投射到一个日期。 – 2011-02-08 07:13:52

尝试在这里分享我的解决方案 (但也许这不是有效的办法,但它为我工作)通常我一些验证首先使用PHP函数来检查日期是否正确价值发布日期值到MySQL之前 /格式与否,然后重新格式化日期以符合mysql日期值格式。

这里是我的功能

function prepareDate($value) { 
    if (preg_match ("/([0-9]{1,2})\/([0-9]{1,2})\/([0-9]{4})/", $value, $regs)) { 
     $date = "$regs[3]-$regs[2]-$regs[1]"; 
    } else { 
     if ($value === '') { 
      $date = null; 
     } else { 
      throw new Exception ("Invalid date format: $value"); 
     } 
    } 
    return $date; 
}