2010-09-13 118 views
2

我試圖從php表單插入當前日期到數據庫中。php日期格式

我的查詢是:

$sql3="INSERT INTO orderDetails (compName, package, cost, date) VALUES ('$companyName', '$package', '$cost_record', 'date()')"; 

這將產生以下:0000-00-00 00:00:00這顯然是不正確的。

任何人都可以推薦如何獲得此顯示正確的日期/時間?

此外,我需要它在以下格式:yyyymmddhhmmss - 這可能嗎?我會怎麼做呢?

謝謝!

+0

最通用的解決方案是使用UNIX_TIMESTAMP。當你以這種格式存儲你的日期時,你可以用它做任何事情。 – fabrik 2010-09-13 11:33:51

+0

這與您的問題無關,但非常重要:確保您不會直接將PHP變量插入到SQL查詢中。總是使用* mysql_real_escape_string($ your_variable)*轉義它們。 – slosd 2010-09-13 11:42:18

+0

嗨,我該怎麼做呢?在數據庫方面,該字段被設置爲TIMESTAMP。 – 109221793 2010-09-13 11:47:58

回答

1

你應該使用PHP的功能time()或MySQL的UNIX_TIMESTAMP這是一個int(11)和像這樣使用:

INSERT INTO orderDetails (compName, package, cost, date) VALUES ('$companyName', '$package', '$cost_record', UNIX_TIMESTAMP -- 

然後你在php中使用date()函數從php創建一個可視化時間戳。

1

使用SQL NOW()功能:

$sql3="INSERT INTO orderDetails (compName, package, cost, date) VALUES ('$companyName', '$package', '$cost_record', NOW()"; 
+1

注意:這僅適用於配置正確的表格方案。 – fabrik 2010-09-13 11:36:32

+0

當然 - 如果字段不是DATETIME,最好使用其他答案的格式。 – 2010-09-13 11:38:32

0
$sql3="INSERT INTO orderDetails (compName, package, cost, date) VALUES ('$companyName', '$package', '$cost_record', 'date(dmy)')"; 

$time = date('Ymd g:i'); 
$sql3="INSERT INTO orderDetails (compName, package, cost, date) VALUES ('$companyName', '$package', '$cost_record', " .$time . ")"; 
0
$date = date ('Y-m-d H:i:s'); 
$sql3="INSERT INTO orderDetails (compName, package, cost, date) VALUES ('$companyName', '$package', '$cost_record', '$date')"; 
+0

注意OP的問題:「我需要它在以下格式:yyyymmddhhmmss」 – fabrik 2010-09-13 11:37:09

+0

從數據庫選擇它時,你可以將其轉換爲任何你喜歡的格式 – 2010-09-13 11:38:44

+0

嗨丹尼斯,我應該將我的數據庫中的字段設置爲非TIMESTAMP這工作?謝謝! – 109221793 2010-09-13 11:50:43

0

參考PHP手冊關於使用日期():http://php.net/manual/en/function.date.php

所以對於你需要它ld是這樣的:

$date = date("YmdHis"); 
$sql3="INSERT INTO orderDetails (compName, package, cost, date) VALUES ('$companyName', '$package', '$cost_record', '$date')"; 

你也可以考慮來自Fabrik的建議。使用UNIX時間戳可能是最可靠的方法。

0

我認爲你的date列實際上是mysql的DATETIME類型。

$sql3="INSERT INTO orderDetails (compName, package, cost, date) VALUES ('$companyName', '$package', '$cost_record', NOW())"; 

應該這樣做。

您可以將其存儲在DATETIME類型(你會看到它爲yyyy-MM-DD HH:MM:SS),然後當你選擇它從數據庫中它格式化爲yyyymmddhhmmss

SELECT DATE_FORMAT(date, '%Y%m%d%H%i%s') FROM orderDetails 

http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_date-format

+0

@fabrik我可以問一下嗎?爲什麼你在第二個sql字符串中添加''時,它已經被選中?我還是新來的,所以我錯過了一些格式約定? – Fanis 2010-09-13 11:54:04

+0

雖然它被's包圍,它不會被解析爲代碼片段。現在再次編輯它很好。 – fabrik 2010-09-13 12:58:20