WPF: использование текстового поля «время» для поиска в базе данных с использованием секунд - PullRequest
0 голосов
/ 31 января 2019

У меня есть дата в столбце Total, который отображает общее время в секундах.(Поскольку это может быть более 24 часов, я использовал DateDiff для вычисления времени в секундах, это возвращает INT), как показано ниже:

SET tmTotals = DATEDIFF(Second, tmStartTime, tmEndTime)

дата может выглядеть следующим образом:

StartTime                 EndTime                   Total
-----------------------------------------------------------        
2018-12-03 00:00:19.257   2018-12-04 00:00:23.288   86404
2018-12-02 10:13:32.586   2018-12-04 10:14:57.298   172885
2018-12-04 12:07:50.636   2018-12-04 18:04:25.526   21395
2018-12-04 03:15:25.061   2018-12-04 13:15:34.665   36009
2018-12-03 20:56:12.947   2018-12-04 03:11:07.992   22495
2018-12-02 00:11:46.020   2018-12-04 00:29:55.051   173889

В моем приложении WPF я хочу использовать два textboxes для поиска между двумя Total разами в таблице.Я хочу, чтобы эти textboxes были отформатированы как hhh:mm:ss (время может превышать 100 часов).Как я могу получить это значение Int, чтобы его можно было использовать в StoredProcedure?

WPF app image: DataTable searching on active time

Со временами менее 24 часов, которые я использовал, но это можетне будет использоваться сейчас:

CONVERT(varchar, DATEADD(second,  DATEDIFF(second, tmStartTime, tmEndTime), 0), 108)

для расчета общего времени, и в моем приложении WPF я сделал:

<TextBox Name="Activeto" Text="{Binding Path=TotalEnd,  StringFormat= \\hh\\:mm\\:ss }" Width="60"/>

и код-позади:

TimeSpan timeSpanStart = TimeSpan.Parse(Activefrom.Text);

чтобы преобразовать string в timespan, который можно использовать для поиска между временами.

1 Ответ

0 голосов
/ 01 февраля 2019

Я нашел решение.В конце я просто разделил входное время textboxes на три отдельных textboxes так: hh: mm: ss.В кодовом коде я вычислил ввод в секундах и добавил их:

int TotalBegin = (int.Parse(TotalStarthh.Text) * 3600) + (int.Parse(TotalStartmm.Text) * 60) + (int.Parse(TotalStartss.Text));
int TotalEnd = (int.Parse(TotalEndhh.Text) * 3600) + (int.Parse(TotalEndmm.Text) * 60) + (int.Parse(TotalEndss.Text));

Возможно, не лучшее решение, но оно работает для меня!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...