我无法确定仅基于月和年来比较SQL中日期的最佳方法。仅基于月份和年份的SQL Server日期比较
我们根据日期进行计算,并且由于计费按月进行,因此月份的日期造成了更多的阻碍。
例如
DECLARE @date1 DATETIME = CAST('6/15/2014' AS DATETIME),
@date2 DATETIME = CAST('6/14/2014' AS DATETIME)
SELECT * FROM tableName WHERE @date1 <= @date2
因为@ DATE1比@ DATE2大于以上例子将不返回任何行。所以我想找一种方法来消除这个问题。
同样,出于同样的原因,下面的情况让我感到悲伤。
DECLARE @date1 DATETIME = CAST('6/14/2014' AS DATETIME),
@date2 DATETIME = CAST('6/15/2014' AS DATETIME),
@date3 DATETIME = CAST('7/1/2014' AS DATETIME)
SELECT * FROM tableName WHERE @date2 BETWEEN @date1 AND @date3
我已经完成了日期的内联转换,以获得指定日期的月份的第一天和最后一天。
SELECT *
FROM tableName
WHERE date2 BETWEEN
DATEADD(month, DATEDIFF(month, 0, date1), 0) -- The first day of the month for date1
AND
DATEADD(s, -1, DATEADD(mm, DATEDIFF(m, 0, date2) + 1, 0)) -- The lastday of the month for date3
必须有一个更简单的方法来做到这一点。有什么建议么?
的SQL Server版本? – christiandev 2014-10-07 15:39:16
@christiandev我们正在使用SQL 2008. – 2014-10-07 15:41:31
另外,如果您不使用时间部分,则可以使用'DATE'数据类型。 – christiandev 2014-10-07 15:45:56