我正在尝试通过c#传递SQL查询,目前它仅基于日期和年份,时间总是设置为0 EG 1997-10-28 00.00.00.000这很好,因为时间永远不会改变它对于我来说,只选择日期等于日历日期。
然而,对于开始字段,每个记录的时间不同,例如1899-12-30 14.14:00.00.000,1899-12-30 15.14:30.00.000。 (向下的秒数总是相同的)。
所以我需要一个查询,它将返回“开始”字段中所选日期的所有结果。我该怎么做?
E.G如果我点击通过1997-10-28 00.00.00.000的日历,我想在那一天的每次结果!我该怎么做?
感谢您的任何意见。
编辑:有没有办法格式化我在SQL中的日期?这来自一个旧的访问数据库!正如你在上面看到的那样它是1899-12-30?不是1998年,我不知道为什么会发生这种情况!答案 0 :(得分:3)
您需要在今天和明天之间选择所有记录,而不包括明天的日期。
WHERE EventDate >= StartDate AND EventDate < DATEADD(d, 1, StartDate)
答案 1 :(得分:3)
WHERE DATEDIFF(dd, your_start_field, @your_param) = 0
答案 2 :(得分:0)
你能不能只查询日期部分。我认为这应该有用......
SELECT * FROM Table1 WHERE StartDate = '1997-10-28'
编辑:以上可能无法正常工作,但以下内容应涵盖需求
SELECT * FROM Table1 WHERE StartDate >= '1997-10-28 00:00:00.000' AND StartDate < '1997-10-29 00:00:00.000'
(注意第二个日期是以下日期)
答案 3 :(得分:0)
此SQL DATEADD(d,datediff(d,0,startdate),startdate)
会将日期与时间转换为日期;
例如
Select field1,field2 from mytable where DATEADD(d,datediff(d,0,startdate),startdate)='1997-10-28'