【问题标题】:Compare two Datetime type ("MMMM-yyyy) in SQL Server CE比较 SQL Server CE 中的两个 Datetime 类型(“MMMM-yyyy”)
【发布时间】: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 月。我想获得该范围内的所有月份。

【问题讨论】:

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

标签: sql sql-server-ce


【解决方案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 函数中起作用。
    猜你喜欢
    • 2011-07-12
    • 2017-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多