как конвертировать nvarchar во время, а не в datetime? - PullRequest
1 голос
/ 08 мая 2009
DECLARE @DateNow smalldatetime
SET @DateNow='12:30'
select @DateNow
-------------------------------------OR--------------------------------------
select CAST( '12:30' as datetime )



Результат: 1900-01-01 12: 30: 00.000 (я этого не хочу)


Но мне нужен этот результат в формате времени, а не в строке, а не в дата-время?

Результат: 12:30 (я хочу это)

Ответы [ 4 ]

9 голосов
/ 08 мая 2009

Как сказал Хосе, вы можете использовать CONVERT для отображения даты и времени в качестве даты. В MSDN есть список всех возможных форматов . Например, формат 8 - это чч: ми: сс:

 select convert(varchar(32),getdate(),8)
 12:51:21

Теперь вы можете сократить секунды, указав меньшее количество символов:

 select convert(varchar(5),getdate(),8)
 12:51

Другой часто используемый формат - 121, гггг-мм-дд чч: ми: сс.ммм (24 ч):

 select convert(varchar(32),getdate(),121)
 2009-05-08 12:51:21.987

Где вы можете выбрать часть времени, например:

 select substring(convert(varchar(32),getdate(),121),12,5)
 12:51

Или объединить струнные хитрости:

 select right(convert(varchar(16),getdate(),121),5)
 12:51

Правильно? Правильно!

7 голосов
/ 08 мая 2009

В SQL Server 2008 есть тип TIME , но в предыдущих версиях его можно было представить как varchar для отображения.

Таким образом вы можете извлечь временную часть поля DATETIME в нужном формате.

DECLARE @DateNow smalldatetime
SET @DateNow = GETDATE() -- 2009-05-08 12:58:02.680

SELECT CONVERT(CHAR(5), @DateNow, 8) 
-- this returns the time portion as 12:58
1 голос
/ 08 мая 2009

Вы можете использовать функцию CONVERT .

Кстати, в SQL Server нет типа данных "ВРЕМЯ". Таким образом, преобразованный результат всегда будет STRING.

РЕДАКТИРОВАТЬ: в версиях SQL Server нет типа данных «ВРЕМЯ» < SQL Server 2008.

0 голосов
/ 08 мая 2009

Если вам нужно сравнить, сложить и / или вычесть значения времени (только), подумайте о возможности использовать INT для сохранения значения «ВРЕМЯ», а затем преобразовать его в CHAR при отображении результат.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...