2014-10-08 137 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