Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# SQL Server 2005,仅存储日期并仅使用日期检查条件_C#_.net_Sql_Sql Server - Fatal编程技术网

C# SQL Server 2005,仅存储日期并仅使用日期检查条件

C# 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

我使用SQL Server,只想存储日期部分,如果它存储的时间也没有问题,但是在检查条件的时候,我只想考虑日期。 对于.NET中的ex

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)