C # Запрос SQL другой формат даты и времени для dataGridview - PullRequest
2 голосов
/ 18 марта 2019

Я получаю ошибку, возвращаемую t-sql из-за разного типа хранилища формата даты и времени в базе данных Пользовательский формат ввода данных будет выглядеть так: '18 -03-2019 '

Ниже приведены два примера таблицы моей БД:

Staff   Id      No   Hex     Ref    sex      update_date_time
1234    4943    01  0x20    SN002   male    2019-03-18 10:31:09.000
1234    4943    01  0x30    SN001   female  2019-03-18 10:32:09.000
1234    4943    01  0x10    SN003   female  2019-03-18 10:33:09.000
1234    4943    01  0x20    SN003   female  2012-06-18 10:34:09.000

Ниже приведен запрос пользователя :

Этот sql получит только три строки из таблицы выше

 SELECT Staff,Id,No,Hex,Ref,sex, update_date_time FROM workers WHERE update_date_time = CONVERT(date,'18-03-2019',103)   

Решение, которое я попробовал:

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

SELECT  SELECT Staff,Id,No,Hex,Ref,sex, update_date_time FROM workers WHERE update_date_time = CONVERT(VARCHAR(10),GETDATE(),103)

В результате преобразование типа данных varchar в тип данных datetime вне допустимого значения

1 Ответ

3 голосов
/ 18 марта 2019

это потому что ваш update_date_time содержит компонент времени.Нормальным решением для этого является использование >= и <.Вы используете больше или равно дате и меньше, чем на следующий день после.

SELECT Staff,Id,No,Hex,Ref,sex, update_date_time 
FROM   workers 
WHERE  update_date_time >= '2019-03-18'
AND    update_date_time <  '2019-03-19'

ИЛИ

DECLARE @input DATE = '2019-03-18'

SELECT Staff,Id,No,Hex,Ref,sex, update_date_time 
FROM   workers 
WHERE  update_date_time >= @input
AND    update_date_time <  DATEADD(DAY, 1, @input)

конечно, если вас не волнует производительность и хочет и упростить запрос, преобразуйте столбец update_date_time в DATE перед сравнением

SELECT Staff,Id,No,Hex,Ref,sex, update_date_time 
FROM   workers 
WHERE  CONVERT(DATE, update_date_time) = @input
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...