我無法確定僅基於月和年來比較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