C# SQL Server 2005,仅存储日期并仅使用日期检查条件
我使用SQL Server,只想存储日期部分,如果它存储的时间也没有问题,但是在检查条件的时候,我只想考虑日期。 对于.NET中的exC# SQL Server 2005,仅存储日期并仅使用日期检查条件,c#,.net,sql,sql-server,C#,.net,Sql,Sql Server,我使用SQL Server,只想存储日期部分,如果它存储的时间也没有问题,但是在检查条件的时候,我只想考虑日期。 对于.NET中的ex SELECT * FROM checkins WHERE checkindate='" + DateTime.Now.toShortDateString() + "'"; 使用该函数仅获取DateTime列的日期部分: SELECT * FROM checkins WHERE CONVERT(VARCHAR(10),checkindate, 10
SELECT *
FROM checkins
WHERE checkindate='" + DateTime.Now.toShortDateString() + "'";
使用该函数仅获取DateTime
列的日期部分:
SELECT *
FROM checkins
WHERE CONVERT(VARCHAR(10),checkindate, 106) ='" +
DateTime.Now.ToShortDateString() + "'";
不过,为了使日期明确,我不会使用ToSortDateString
,而是使用自定义格式字符串:
DateTime.Now.ToString("d MMM yyyy")
因此,总而言之:
SELECT *
FROM checkins
WHERE CONVERT(VARCHAR(10),checkindate, 106) ='" +
DateTime.Now.ToString("d MMM yyyy") + "'";
将仅获取日期,同时将其保留为datetime类型。比较日期时间类型往往比比较字符串更有效
这种方法可以灵活地忽略日期、月份、上个月、年份等。有关更多信息,请参阅本文 @Agay-是的,但为了确保诸如
2/1/2011
之类的日期不能被解释为1月2日或2月1日,最好使用命名的月份格式(2011年1月2日)。@Oded,但是如果NLS设置发生更改,应用程序将中断。@a_horse_与_no_name-我只是建议使用一种不会模棱两可的格式。哪种格式更好?@Oded:我非常喜欢ISO标准:YYYY-MM-DD@a_horse_with_no_name:在新的“2008”类型之前,该ISO标准不适用于SQL Server。阅读这里的评论
SELECT *
FROM checkins
WHERE DATEADD(DAY, DATEDIFF(DAY, 0, checkindate), 0)
= DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE()), 0)
SELECT dateadd(dd, datediff(dd,0,getdate()), 0)