Member 14800672 Ответов: 2

Как разыграть datetime


Итак у меня есть поле со временем и поле с датой и я хочу объединить их чтобы получить поле datetime

затем используйте это значение и сравните, если оно меньше
GETUTCDATE()


но я получаю ошибку

Что я уже пробовал:

select 
cast(Table.date +' ' +(Select HourValue from table2 where table2.Hour = Table.Hour) +
+ ':' + (Select MinuteValue from table3 where table3.Minute = Table.Minute) as datetime) as Timee

from	Table

Gerry Schmitz

Попробуйте сначала выбрать переменные и использовать их в своем выражении "приведение". Вы можете, по крайней мере, сказать, что вы выбираете или нет.

2 Ответов

Рейтинг:
2

Richard Deeming

типы данных - как объединить дату и время в datetime2 в SQL Server? - Администраторы Баз Данных Stack Exchange[^]

SELECT 
    DATEADD(day, DATEDIFF(day, '19000101', DatePart), CAST(TimePart AS DATETIME2(7))) As [DateAndTime]
FROM
    YourTable
;


Рейтинг:
1

OriginalGriff

Это, вероятно, не сработает, даже если вы не получили ошибку: ваш "внутренний выбор" вряд ли вернет единственное значение, которое соответствует критериям, даже если вы могли бы сформулировать его так.

Вместо этого используйте соединение, чтобы объединить три таблицы ряд за рядом, а затем проработать детали.

Но... это подразумевает тот стол.Дата-это значение VARCHAR или NVARCHAR, и если это так, то это очень плохая идея. Измените дизайн, чтобы вместо него использовать DATE или DATETIME, а затем используйте DATEADD для включения значений часов и минут.
И у меня есть свои сомнения по поводу всего существования таблиц 2 и 3 - они выглядят так, как будто вы создали их, чтобы обойти какую-то другую дизайнерскую ошибку, но я не могу предположить, что это может быть, потому что я понятия не имею, как выглядят ваши таблицы или содержат их!