SQL Server извлекает время из даты и сравнивает его

#sql-server-2008 #time #compare

#sql-server-2008 #время #Сравнить

Вопрос:

Мой вопрос в том, как извлечь время из datetime поля и сравнить его с другим временем, извлеченным из GetDate() функции?

Я использую SQL Server 2008.

Заранее спасибо!

Ответ №1:

SELECT CONVERT(TIME, GETDATE(), 101) вы получите Time from GETDATE() . Вам нужно будет сохранить его в переменной, чтобы использовать при сравнении. Не элегантно, но это работает.

 DECLARE @Time1 AS TIME(3)
DECLARE @Time2 AS TIME(3)
SELECT @Time1 = CONVERT(TIME, GETDATE(), 101)

SELECT @Time1;

SELECT @Time2 = CONVERT(TIME, DATEADD(MINUTE, 1, GETDATE()), 101);

SELECT @Time2;

SELECT DATEDIFF(SECOND, @Time1, @Time2)
  

Комментарии:

1. И я получаю эту ошибку: сообщение 243, уровень 16, состояние 1, тип строки 1 ВРЕМЯ не является определенным системным типом.

2. @Jordan Borisov — тогда либо вы ошибаетесь в версии своего сервера ( time не существовало до версии 2008 года), либо для базы данных, в которой вы работаете, установлен более низкий уровень совместимости.

3. Нет. Версия 2008, и база данных в порядке с уровнями совместимости.

4. @JordanBorisov: для меня отлично работает — на SQL Server 2008 R2 (но TIME наверняка был представлен в версии 2008)