我有一個日期字段中使用此代碼的PHP:將PHP的日期到MySQL格式
$date = mysql_real_escape_string($_POST['intake_date']);
如何轉換這MySql的格式0000-00-00納入分貝。是否符合以下條件:date('Ymd'strtotime($ date);我之所以問這個問題,是因爲我嘗試過這種變化,而且我似乎無法使其工作,或者顯示爲1970或其他變體。那非常感謝
我有一個日期字段中使用此代碼的PHP:將PHP的日期到MySQL格式
$date = mysql_real_escape_string($_POST['intake_date']);
如何轉換這MySql的格式0000-00-00納入分貝。是否符合以下條件:date('Ymd'strtotime($ date);我之所以問這個問題,是因爲我嘗試過這種變化,而且我似乎無法使其工作,或者顯示爲1970或其他變體。那非常感謝
$date = mysql_real_escape_string($_POST['intake_date']);
1.如果你的MySQL列DATE
類型:
$date = date('Y-m-d', strtotime(str_replace('-', '/', $date)));
2.如果你的MySQL列是DATETIME
類型:
$date = date('Y-m-d H:i:s', strtotime(str_replace('-', '/', $date)));
你還沒有上班strototime()
,因爲它不會使用破折號-
分隔符,它會嘗試做一個減法。
更新,您的日期的格式不能使用strtotime()
的方式,使用此代碼來代替:
$date = '02/07/2009 00:07:00';
$date = preg_replace('#(\d{2})/(\d{2})/(\d{4})\s(.*)#', '$3-$2-$1 $4', $date);
echo $date;
輸出:
2009-07-02 00:07:00
您正在尋找MySQL的功能FROM_UNIXTIME()
和UNIX_TIMESTAMP()
使用它們在你的SQL,如:
mysql> SELECT UNIX_TIMESTAMP(NOW());
+-----------------------+
| UNIX_TIMESTAMP(NOW()) |
+-----------------------+
| 1311343579 |
+-----------------------+
1 row in set (0.00 sec)
mysql> SELECT FROM_UNIXTIME(1311343579);
+---------------------------+
| FROM_UNIXTIME(1311343579) |
+---------------------------+
| 2011-07-22 15:06:19 |
+---------------------------+
1 row in set (0.00 sec)
這個網站有兩個非常簡單的解決方案 - 只是檢查代碼,我提供的描述,以防萬一你想他們 - 節省點擊一些。
http://www.richardlord.net/blog/dates-in-php-and-mysql
1.One常見的解決方案是將日期存儲在DATETIME領域和使用PHP的日期()和的strtotime()函數PHP時間戳和MySQL日期時間之間轉換。這些方法的用法如下 -
$mysqldate = date('Y-m-d H:i:s', $phpdate);
$phpdate = strtotime($mysqldate);
2.我們的第二個選擇是讓MySQL完成這項工作。 MySQL有我們可以用來在我們訪問數據庫的地方轉換數據的函數。 UNIX_TIMESTAMP將從DATETIME轉換爲PHP時間戳,而FROM_UNIXTIME將從PHP時間戳轉換爲DATETIME。這些方法在SQL查詢中使用。因此,我們插入和使用更新日期查詢這樣的 -
$query = "UPDATE table SET
datetimefield = FROM_UNIXTIME($phpdate)
WHERE...";
$query = "SELECT UNIX_TIMESTAMP(datetimefield)
FROM table WHERE...";
我使用此代碼︰$ date = mysql_real_escape_string($ _ POST ['intake_date']); $ newdate = date('Y-m-d H:i:s',strtotime($ date));但它似乎是在數據庫00:00:00將它放在YYYY-dd-mm中。這個日子和月份似乎被扭轉。謝謝 – bollo
我不完全確定爲什麼這會發生誠實 - 我會考慮它,並回到你身邊,除非有人擊敗我 - 對此感到遺憾! –
function my_date_parse($date)
{
if (!preg_match('/^(\d+)\.(\d+)\.(\d+)$/', $date, $m))
return false;
$day = $m[1];
$month = $m[2];
$year = $m[3];
if (!checkdate($month, $day, $year))
return false;
return "$year-$month-$day";
}
如果intake_date是一些常見的日期格式,你可以使用date()
和strtotime()
$mysqlDate = date('Y-m-d H:i:s', strtotime($_POST['intake_date']));
然而,這隻會如果日期工作格式被strtotime()
接受。有關支持的格式,請參閱it's doc page。
有幾種選擇。
要麼將其轉換成timestamp和使用的指示其他職位與strtotime()
或使用MySQL’s date parsing option
如果你知道格式日期在$ _POST [intake_date]中,您可以使用爆炸獲取年,月和時間,然後連接以形成有效的mySql日期。例如,如果您得到的日期有點像1988年12月15日,你可以做這樣的
$date = explode($_POST['intake_date'], '/');
mysql_date = $date[2].'-'$date[1].'-'$date[0];
但如果你有有效日期date( 'Y-M-d' 的strtotime($日期));也應努力
如果你在格式DD/MM/YYYY一個發佈日期,請使用以下:
$date = explode('/', $_POST['posted_date']);
$new_date = $date[2].'-'.$date[1].'-'.$date[0];
如果你擁有了它在MM/DD/YYYY,只是改變了下聯:
$new_date = $date[2].'-'.$date[0].'-'.$date[1];
PHP 5.3具有任何格式指定函數來創建和DateTime對象格式化:
$mysql_date = "2012-01-02"; // date in Y-m-d format as MySQL stores it
$date_obj = date_create_from_format('Y-m-d',$mysql_date);
$date = date_format($date_obj, 'm/d/Y');
echo $date;
輸出:
01/02/2012
MySQL也可以通過插入時/更新,並且DATE_FORMAT()
查詢時使用STR_TO_DATE()
功能控制的格式。
$php_date = "01/02/2012";
$update_query = "UPDATE `appointments` SET `start_time` = STR_TO_DATE('" . $php_date . "', '%m/%d/%Y')";
$query = "SELECT DATE_FORMAT(`start_time`,'%m/%d/%Y') AS `start_time` FROM `appointments`";
'$ _POST ['intake_date']'現在格式化了嗎?我猜MySQL列的類型是'DATE'? – Bojangles
是一個unix時間戳的原始日期嗎? (139293929看的東西) – Jakub
@jam它是日期時間格式 – bollo