2012-06-27 15 views
0

我正在運行MSSQL函數並返回到PHP,我在PHP中使用了這個函數兩次並將它寫入MySQL數據庫。PHP輸入MS SQL無法從字符串中轉換日期和/或時間

我第一次跑我使用$來和$從功能(我很清楚這不是漂亮,我不是通過貿易PHP編碼器...)

$to = date("j M Y", mktime()); 
$year = date("Y", mktime()); 
$jan = '1 jan '; 
$from = $jan . $year; 

我然後使用以下內容

select * from MISYearToDate('$from', '$to') 

而且工作非常好。

當我再做使用

$weekstarting = date('j M Y', strtotime('last sunday'))."<br>"; 
$weekending = date('j M Y', strtotime('next saturday'))."<br>"; 

,然後同樣的事情,但將在本週的日期運行

select * from MISYearToDate('$weekstarting', '$weekending') 

,我發現了錯誤

[Microsoft][SQL Server Native Client 11.0][SQL Server]Conversion failed when converting date and/or time from character string.) 

$從和$ to echo

1 jan 2012 
27 Jun 2012 

$ weekstarting和$所以,據我可以告訴週末度假回聲

24 Jun 2012 
30 Jun 2012 

,是不是真的有一個區別,我很該死糊塗了!

回答

1
$weekending = date('j M Y', strtotime('next saturday'))."<br>"; 
                 ^^^^^^^ 

<br>不是SQL日期字符串的有效組件。您可能在瀏覽器中查看輸出,因此<br>已被有效隱藏,但這就是您的問題所在。

這就是把你查詢到:

select * from MISYearToDate('24 Jun 2012<br>', '30 Jun 2012<br>') 
+0

有時這是最簡單的事情......這會教會我試圖將2個任務合併到一個代碼行:D 謝謝! – franglais

+0

沒問題。當你在瀏覽器中調試PHP輸出時,我建議你總是做一個「查看源代碼」,特別是當你將html與你的數據混合在一起時 - 瀏覽器基本上會騙你,因爲它不知道你是調試。 –

1

我建議僅以yyyy-mm-dd的格式將日期填入SQL中。這將確保SQL不會與日期格式混淆。

SQL將不接受格式爲2012年1月1日的日期(以字符串形式)。

+0

所以,只是爲了我的知識,怎麼就接受了$從和$到字符串? – franglais

+0

此外,我不再收到消息,但是我得到了非常不同的結果,返回SSMS和PHP ... 在PHP中,我得到了「Bob Nudd 0 0 0 0」,而在SSMS中,我得到了「Bob Nudd 1 5 23 15」 – franglais

相關問題