2013-05-28 61 views
0

我正在開發一個項目,我希望我的日期格式爲dd/mm/yyyy(印度格式/英國格式)。在我的數據庫表中,我使用了字段的字符串數據類型。sql server查找日期差異輸入日期格式爲dd/mm/yyyy

我有2個字段In_date和Out_date通過這些我計算Total_days。

現在我想計算這兩個日期之間的天差。 SQL Server的默認格式是mm/dd/yyyy。每當我執行

select Datediff(DAY, 'In_date', 'Out_date') from Table; 

它給我錯誤錯誤轉換日期從/到字符串。但當我執行

select Datediff(DAY, '05/28/2013', '05/26/2013') from Table; 

它給了我完美的答案。

請幫忙。

回答

2

您應該只將數據庫中的日期存儲爲DateTime s。這將允許您正確比較日期。格式應該在您的應用程序層處理。

+0

是的兄弟你是對的,但它是客戶的要求,以不同的領域和時間在不同的領域和格式dd/mm/yyyy和時間以hh:mm存儲日期。 –

+0

在這種情況下,刪除第一個例子中列名稱周圍的撇號,它應該可以工作......但它的設計很糟糕。告訴你的客戶他們不應該規定技術要求:-) –

+0

雅兄弟。我曾多次告訴他們,但他們不聽。 「客戶是國王」到底做了什麼?不是嗎? –

0

它試圖將列名轉換爲日期,它們不是日期。從'In_date'和'Out_date'附近刪除撇號,它會將它們識別爲列而不是字符串。

select Datediff(DAY, In_date, Out_date) from Table 
+0

不起作用。我的格式是dd/mm/yyyy,而sql server的是mm/dd/yyyy –

+0

仍然不起作用。 –

1

嘗試這一個 -

SET DATEFORMAT mdy 
SELECT DATEDIFF(DAY, '05/28/2013', '05/26/2013') 

但希望使用ISO日期格式(年月日):

SELECT DATEDIFF(DAY, '20130528', '20130526') 
0
select Datediff(DAY, In_date, Out_date) from Table; 
1

試試這個:

SET DATEFORMAT dmy; 

select Datediff(DAY, In_date, Out_date) from Table; 
+0

@BeingJaved:這有幫助嗎? –

+0

否不起作用。 –