比较 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 查询在 SQL Server CE 中很慢,但在 SQL Server 中很快