2014-10-08 3 views
-1

У меня есть этот код, и я пытаюсь конвертировать DATETIME в Time:Преобразование DATETIME в Time

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 ожидает datepart, число, дату. Не datepart, дата, дата. – Kritner

+0

Вы указываете в нескольких местах, где вы пытаетесь получить время с даты и времени, но ваши сообщения об ошибках схемы и ошибок указывают, что вы работаете с DATE, а не DATETIME. Вы не можете получить время с даты, поскольку это только дата, а не дата. – Kritner

ответ

0

От BOL:

DATEADD (DatePart, номер, дата)

Вы должны сначала показать часть (второй), а затем показать номер (сколько добавить или вычесть), а затем, наконец, показать фактическую дату.

0

Если вы пытаетесь получить время из DateTime (и дата не имеет значения), вы можете сделать:

SELECT CAST(checkInDate as TIME) 

сведению это не может работать со всеми реализациями SQL, но это выглядит MS SQL - пожалуйста, пометьте свои сообщения в своей СУБД в будущем (и даже если возможно, версию, поскольку это решение не работает во всех версиях ms sql)

+0

только что изменил его, но он говорит: «Явное преобразование даты и времени даты не допускается». –

+0

Какой тип данных является checkInDate и какие СУБД и версия вы используете? – Kritner

+0

wait ... ваш checkinDate является фактическим типом * DATE *? не datetime? Вы не можете получить время из типа DATE, нет времени, связанного с ним – Kritner

Смежные вопросы