2011-06-01 128 views
1

我有一個PHP腳本,通過SQL存儲SQL Server 2005的日期時間

$date = '15 Jun 2011 00:00'; 
$sql = "INSERT INTO shows (DateStart) VALUES ('$date')"; 

中插入值到SQL Server 2005的表我有2個問題:

1)如何以最佳方式這個日期轉換成一些SQL服務器理解?在我的系統上,默認格式是mm/dd/yyyy,但我想將日期呈現爲用戶可讀的日期。

2)當插入一個空字符串時,DateStart值被設置爲1/1/1900。如何最好地將「無效」日期轉換爲NULL(該列已接受NULL),以便如果$date = "" then DateStart IS NULL

謝謝!

回答

5
  • 點1:使用ISO日期格式YYYY-MM-DDTHH:MM:SS
    注意:迄今爲止,只有使用YYYYMMDD監守異常的SQL Server如何解析日期
  • 點2:NULLIF(value, '')
+0

+1爲ISO日期格式! – 2011-06-01 08:42:07

+0

+1。你有解析異常日期的更多信息嗎? – 2011-06-01 08:59:39

+0

@Mark S. Rasmussen:在評論b​​unfight這裏對兩個答案(是我和@marc_s)與進一步的鏈接http://stackoverflow.com/questions/1138142/best-way-to-convert-and-validate-a日期字符串 – gbn 2011-06-01 09:01:31

0
  1. 我想在日期時間列中插入記錄時的日期時間格式應始終爲「YYYY-MM-DD HH:MM:SS」Default Format

  2. gbn已經告訴。

+0

鏈接的文章似乎沒有包含關於使用'YYYY-MM-DD HH:MM:SS'格式的任何建議。 – 2011-06-01 09:34:12

+0

請看看[這個答案](http://stackoverflow.com/questions/1138142/best-way-to-convert-and-validate-a-date-string/1138203#1138203),因爲它顯示清楚當這種格式不可靠。 – 2011-06-01 09:37:40

+0

謝謝Andriy。這是gbn 81.9K聲望的原因。我在datetime列的數據庫中插入了記錄,並且它沒有存儲T – Pankaj 2011-06-01 11:32:24

相關問題