Sql server C#向dataGridview查询不同日期时间格式的SQL

Sql server C#向dataGridview查询不同日期时间格式的SQL,sql-server,winforms,tsql,Sql Server,Winforms,Tsql,由于数据库中存储的日期时间格式不同,我通过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 fema

由于数据库中存储的日期时间格式不同,我通过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)   
我尝试过的解决方案:

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  SELECT Staff,Id,No,Hex,Ref,sex, update_date_time FROM workers WHERE update_date_time = CONVERT(VARCHAR(10),GETDATE(),103)
结果将varchar数据类型转换为datetime数据类型 在超出范围的值中


这是因为您的
update\u date\u time
包含一个时间组件。通常的解决方法是使用
=
这是因为您已转换为一个日期,该日期在时间成分上不匹配,即
2012-06-18 10:34:09.000
!=
2012-06-18 00:00:00.000
@DaleBurrell如果所有datetime都以不同的时间结束,例如2012-06-18 10:34:09.000、2012-06-18 10:35:09.000、2012-06-18 10:38:09.0002012-06-18 10:34:09.000,有什么解决方案吗?如果您只关心日期,那么在将其保存到数据库时应该删除时间组件。否则,请使用@Squirrels solutionConvert表数据转换为日期<代码>。。。其中convert(date,update_date_time)=convert(date,'18-03-2019',103)
@dalburrell我有带松鼠的答案谢谢。update_date_time将从文本框中获取字符串,用户输入您的解决方案时需要更新“update_date_time”<,每次我更新我的问题时,我都忘了列出datetime用户输入
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)
SELECT Staff,Id,No,Hex,Ref,sex, update_date_time 
FROM   workers 
WHERE  CONVERT(DATE, update_date_time) = @input