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

时间:2011-02-08 07:01:27

标签: php mysql

我有一个日期需要存储在mysql的日期字段中。我的字符串采用以下格式:

24/02/2011

虽然它需要以下列方式进入数据库:

2011-02-24

我以为我可以在sql查询

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

但它不喜欢它。

还有其他方法吗?

5 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

您的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']);

答案 2 :(得分:1)

或者您可以使用

$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);

答案 3 :(得分:1)

您只需执行以下操作即可在PHP中解决此问题:

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

我建议将其存储为时间戳,让你的表示层处理这个逻辑,知道如何呈现日期不应该是你的数据库的关注点。

答案 4 :(得分:1)

尝试在此处分享我的解决方案 (但也许这不是有效的方式,但它对我的工作) 通常在将日期值发布到mysql之前我先做一些验证,首先使用php函数检查日期是否正确值/格式,然后重新格式化日期以符合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;
}