2012-06-04 79 views
0

我正在編碼以便通過比較dateTime來搜索數據。在網絡表單中,用戶輸入值2012-06-04存儲在$_REQUEST['dateSearch']中。我從創建dateTime對象:mySQL中的默認日期時間格式

$dateObj = date_create_from_format("Y-m-d",$_REQUEST['dateSearch']); 
$dateParam = $dateObj->format("Y-m"); 

然後我用$dateParam在SQL查詢來尋找數據

$sql = " 
    SELECT * 
    FROM `temp` as `t` 
    WHERE `t`.`date` LIKE '$dateParam%' 
"; 

一切都OK了,但我不知道MySQL的送花兒給人僅使用一個dateTime格式Y-m-d H:i:s。 在這裏,$dateParam = $dateObj->format("Y-m");我設置的默認格式是「Y-m」。默認格式是否永遠不會改變?我不想在代碼中使用硬編碼格式Y-m-d H:i:s,而不是,我認爲從系統中獲取格式字符串會更好。如何從mySQL獲取默認格式字符串dateTime

+1

順便說一句,'LIKE '$ dateParam%''是一個非常低效的搜索方法,因爲它通過搜索比較文本值。 'WHERE YEAR(date)= 2012 AND MONTH(date)= 6'可能會更高性能,因爲它允許MySQL使用其原生日期格式。 – deceze

回答

4

你誤會,Y-m-d H:i:s
ONLY格式日期時間數據類型。

Y-m-d = date 
H:i:s = time 

這就是爲什麼被命名爲datetime

在MySQL中改變返回格式的日期時間,
可以使用date_format功能在MySQL

比如,

date_format('%Y-%m') = 2012-06 
+0

謝謝!我意識到我應該用DATE_FORMAT()來強制我們的規則使用mySQL。謝謝。 – Davuz

+0

如果我想在MySQL中將默認日期時間格式設置爲'Y/m/d H:i:s'會怎麼樣?可能嗎? –

+0

你想要做什麼?數據格式化應該在使用數據的用戶界面上完成。 – ajreal