2014-10-08 125 views
-1

我有這樣的代碼,我想轉換日期時間,以時間:轉換日期時間,以時間

ALTER Procedure [dbo].[GetBookingDetails] 
@iDnumber nvarchar(50) 
as 

select 
    BookingNo, 
    RoomName, 
    CONVERT(Varchar(10), DATEADD(s,CheckinDate, '1970-01-01 00:00:00'),101), 
    CONVERT(Varchar(10), DATEADD(s,CheckinDate, '1970-01-01 00:00:00'),101), 
    Breakfast 
from Booking 
where IDNumber= @iDnumber 

,但我得到這個錯誤

「參數的數據類型日期爲論點2無效DATEADD 功能」

+0

我不確定你想要完成什麼你的轉換語句。 DATEADD預計日期部分,編號,日期。不是日期部分,日期,日期。 – Kritner 2014-10-08 15:34:17

+0

您正在試圖從日期時間獲取時間的幾個地方,但您的架構和錯誤消息表明您正在使用DATE,而不是DATETIME。你不能從一個日期得到一個時間,因爲它只是一個日期,而不是一個日期。 – Kritner 2014-10-08 15:54:25

回答

0

BOL

DATEADD(日期部分,數字,日期)

您需要首先顯示部分(第二),然後顯示一個號碼(多少來增加或減少),然後最後顯示您的實際日期。

0

如果你想從一個日期時間獲取時間(和日期並不重要),你可以這樣做:

SELECT CAST(checkInDate as TIME) 

注意這可能與SQL的所有實現正常工作,但是這看起來像MS SQL - 請在將來使用您的DBMS標記您的文章(如果可能的話,甚至版本 - 因爲此解決方案不適用於所有版本的MS SQL)

+0

只是改變它,但它說「不允許顯式轉換數據類型日期。」 – 2014-10-08 15:47:43

+0

什麼樣的數據類型是checkInDate和你使用的DBMS和版本是什麼? – Kritner 2014-10-08 15:48:43

+0

等待...您的checkinDate是實際的* DATE *類型?不是日期時間?您無法從DATE類型中獲得時間,因此沒有時間與其關聯 – Kritner 2014-10-08 15:51:48