sql запрос: выберите всех пользователей, для которых потребовалось время более часа

#c# #sql #sql-server

#c# #sql #sql-сервер

Вопрос:

ну, у меня есть таблица

 create table usersnew
(
user1 varchar (50) primary key,
names varchar(50),
lastname varchar(50),
hoursneeded float)

create table hoursusers
(
user1 varchar(50),
timeMade varchar(50),
foreign key (user1) references usersnew(user1)
)
  

количество часов — это время, которое пользователю необходимо выделить для завершения своей службы.. «социальная служба»
это может быть 400 часов..
теперь время, указанное во времени, — это то, сколько времени он сделал..
это varchar, потому что я сохраняю что-то как это «30:00:00»
это 30 часов
’23:30:00′ это 23 часа 30 минут
итак .. я конвертирую его в C # с помощью timespan и других вещей..
теперь мне нужно сделать запрос, где
Я выбираю для всех пользователей, которым потребовалось время более часа…
если ему нужно набрать 400, и он сделал ‘400:00:00’ или плюс, я собираюсь выбрать его..
но не всем пользователям нужно указывать одинаковое время..
другим пользователям нужно сделать 450 или 300, я не знаю… но я хочу выбрать пользователям
тан исчерпал необходимое ему время.. как я могу это сделать? Я могу использовать sql для этого запроса и
c # с циклами-для, для того, чтобы сделать это … есть идея?

Ответ №1:

Вместо этого используйте минуты с числовым типом данных

вы можете легко преобразовать минуты в часы, разделив на 60

и числовые данные легче запрашивать

Ответ №2:

какая-то идея?

Сохраняйте данные с типом, который представляет тип данных, которые необходимо сохранить. Затем внезапно ваша проблема решена!

  • Использование типа данных TIME в SQL Server 2008; в противном случае:
  • Вы можете попробовать сохранить данные как FLOAT (что вы делаете в другой таблице); хотя это становится уродливым, если вам начинает требоваться посекундная детализация:
  • Если вам нужна детализация в секунду, попробуйте сохранить количество секунд в INT столбце.

Резюме: вы хотите сохранить количество часов в базе данных, так и сделайте это! Не сохраняйте строку только потому, что ваше приложение часто ее передает. Вы должны разобраться с этим в DAL вашего приложения.

Ответ №3:

Вы не должны хранить как varchar для лучшего вывода. Давайте сохраним их в некотором числовом формате или формате даты с вашей логикой. Например вы можете использовать поле datetime для сравнения. Также вы можете написать некоторые хранимые процедуры для этого, но никогда не рекомендуйте использовать циклы или условия из .ЧИСТЫЙ код для извлечения.