我有一個日期我需要存儲在MySQL中的日期字段。我的字符串的格式如下:只需將此日期轉換爲正確的格式
24/02/2011
雖然它需要進入的數據庫:
2011-02-24
我想我能做到這一點,像這樣在SQL查詢
STR_TO_DATE('.$_POST['start_date'].', \'%d,%m,%Y\')
但它不喜歡它。
有沒有另一種方法?
我有一個日期我需要存儲在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']));
我會改爲推薦存儲它作爲一個時間戳,並讓你的表示層處理這個邏輯,它不應該是你的數據庫關心如何表示日期。
嘗試在這裏分享我的解決方案 (但也許這不是有效的辦法,但它爲我工作)通常我一些驗證首先使用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;
}
我認爲他知道,他希望它Y-M-d格式因爲MySQL插入到DATE/DATETIME/TIMESTAMP列時接受字符串。它會直接將它投射到一個日期。 – 2011-02-08 07:13:52