2013-12-01 5 views
1

Я хотел бы иметь столбец даты и времени в моей таблице. Основная цель иметь эти 2 колонков, чтобы иметь возможность возвращать результаты запроса как:Типы данных и данных даты и времени в SQL Server

  1. Количества процедур, проведенных в период November 2011.
  2. Число людей, работающих в сменах между 00:01 и 08:00 часов.

У меня есть две таблицы, которые имеют следующие атрибуты в них (среди прочих):

Shift(day, month, year) 
Treatment(start_time, date) 
  1. Для первого table- Shift, результаты запроса должны возвращать значения в терминах (ex: 30,2012)
  2. Для второй таблицы start_time должно иметь значения, такие как 0001 и 0800 (как я уже упоминал выше). Хотя дата может возвращать значения, такие как 'Ноябрь 2011'.

Первоначально я думал, используя date тип данных для объявления каждого из day/month/year/date переменных будет делать эту работу. Но это, похоже, не сработало. Должен ли я использовать int, varchar и int соответственно для day, month и year соответственно? Кроме того, поскольку переменная date не имеет составных частей, будет работать здесь date? И, наконец, если я использую timestamp тип данных для атрибута start_time, что должно быть значение вхожу в вставных столбцах она должна быть 08:00:00?

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

Благодарим за помощь.

+0

типа даты должен работать нормально для первой части. Что «не получается»? – Hans

+0

О, и не используйте временную метку, если вы действительно не знаете, что она делает, потому что это, вероятно, не то, что вы думаете. – Hans

ответ

0

AFAIK лучше использовать один столбец по типу DateTime вместо двух столбцов, которые содержат дату и время отдельно.

Также можно просто запросить этот столбец либо по дате или времени пути приведения его к соответствующему типу:

DECLARE @ChangeDateTime AS DATETIME = '2012-12-09 16:07:43.937' 
SELECT CAST(@ChangeDateTime AS DATE) AS [ChangeDate], 
     CAST(@ChangeDateTime AS TIME) AS [ChangeTime] 

результатов:

ChangeDate  ChangeTime 
---------- ---------------- 
2012-12-09 16:07:43.9370000 
Смежные вопросы