Я хочу сохранить дату и время пользователя для различных выполненных действий. Для даты я решил использовать столбец DateTime в базе данных, а для времени у меня возникла дилемма, какой тип данных выбрать.
Я знаю, что в SQL Server 2008 введен тип данных времени, но я использую более старую версию, т. Е. Sql Server 2005, поэтому Мне нужно ваше предложение, чтобы доказать, что мое понимание верно или неверно.
Я видел людей, использующих varchar или DateTime для хранения времени в базе данных. Но я рассчитываю на использование типа данных Integer.
Причина моего выбора - производительность.
Ниже приводится оправдание, которое я даю себе.
Предположения
Все данные, сохраняемые в базе данных, должны соответствовать следующим правилам
Дата будет сохранена в формате мм / дд / гггг чч: мм: сс, где чч: мм: сс всегда будет 00:00:00
Время будет сохранено в правильном формате (от чч: мм: сс до ччМмсс)
if hh is 00
then MMss
and if MM is 00
then ss
and if ss is 00
then 0
hh will range in between 0-23
MM will range in between 0-59
ss will range in between 0-59
i.e. few examples
00:00:00 = 0
00:01:00 = 100
01:00:00 = 10000
13:00:00 = 130000
Личная мысль, почему это будет работать лучше.
SELECT * FROM Log WHERE loginDate = '05/23/2011'
AND loginTime BETWEEN 0 AND 235959 --Integer Comparison
При использовании JOINS на основе DateTime с учетом объединения только для части Date.
СОЕДИНЕНИЕ двух таблиц на основе общих дат независимо от времени. Я думаю, что преобразование типов в таких случаях сильно повлияет на использование DateTime в качестве типа данных хранилища.
Так как Sql должен будет выполнить целочисленное сравнение, и не нужно вводить типы, следовательно, он должен работать лучше.
EDIT
Единственный недостаток, который я только что определил, - это когда я хочу получить разницу между двумя временами и тем, сколько времени было потрачено между 3 днями, надеюсь, это станет кошмаром для управления во всем приложении.