比较 SQL Server CE 中的两个 Datetime 类型(“MMMM-yyyy”)

Posted

技术标签:

【中文标题】比较 SQL Server CE 中的两个 Datetime 类型(“MMMM-yyyy”)【英文标题】:Compare two Datetime type ("MMMM-yyyy) in SQL Server CE 【发布时间】:2016-04-12 04:21:10 【问题描述】:

我必须仅按日期部分(月-年)比较两条记录,

我曾经比较过

 WHERE MonthAndYear >= '" + StartDate + "'  AND MonthAndYear <= '" + CustomEndDate + "'

举例

MonthAndYear 也是 MMMM-yyyy 类型

开始日期是 2013 年 4 月,

CustomEndDate 是 2016 年 4 月。

仅返回 2013 年 4 月、2014 年 4 月、2015 年 4 月。我想获得该范围内的所有月份。

【问题讨论】:

如果这种查询经常运行并且需要高性能,则可以考虑将您的日期拆分为其组成字段。 最好通过带有计算列的索引视图。 【参考方案1】:

首先您需要将 MonthAndYear 转换为日期时间,然后进行比较 喜欢:

WHERE CAST('01-'+MonthAndYear AS DATETIME) >= @StartDate AND DATEADD(mm, 1, CAST('01-'+ MonthAndYear AS DATETIME))-1 <= @CustomEndDate

【讨论】:

【参考方案2】:

你可以尝试一个小技巧:

WHERE YEAR(MonthAndYear)>=YEAR('" + StartDate + "') AND MONTH(MonthAndYear)>=MONTH('" + StartDate + "') 
AND YEAR(MonthAndYear)<=YEAR('" + CustomEndDate + "') AND MONTH(MonthAndYear)<=MONTH('" + CustomEndDate  + "')

UPDATE:如果 YEAR 和 MONTH 在 SQL CE 中不可用,则使用 DATEPART 函数

【讨论】:

但是在 SQL CE 中我们不能运行这种类型的查询。像 YEAR(), Month() 在这种情况下,您可以将 YEAR 和 MONTH 替换为 DATEPART Function 谢谢@Alexej,我会试试的。 @SandunTharaka,如果可行,请标记为答案或有帮助 在您提到的答案在 SQL CE 中不起作用,但它在您在评论中提到的 DATEPART 函数中起作用。

以上是关于比较 SQL Server CE 中的两个 Datetime 类型(“MMMM-yyyy”)的主要内容,如果未能解决你的问题,请参考以下文章

在 SQL Server CE 4.0 中使用 COUNT 进行比较

ASP.NET Web 应用程序 SQL Server CE 数据库配置错误 [重复]

具有类型化数据集和 Sql Server CE 的事务

SQL 查询在 SQL Server CE 中很慢,但在 SQL Server 中很快

SQL Server CE 中的 Shrink 和 Compact 有啥区别?

Visual Studio 2012 中的 Sql Server ce 问题