Sql server 什么';在SQL Server中,对指定日期执行数学运算的最佳方法是什么?
这与,但我更进一步: 我正在SQL Server表上编写查询,希望获取当前日历年和上一日历年的所有记录。现在,我需要一个查询来返回2008年1月1日到今天之间的所有记录。但到了2010年1月1日,我希望它能返回不早于2009年的记录 基本上,我想将当前日期限定为年初,然后减去1 在翻阅了一些SQL Server文档后,我得出了以下结论:Sql server 什么';在SQL Server中,对指定日期执行数学运算的最佳方法是什么?,sql-server,tsql,date,Sql Server,Tsql,Date,这与,但我更进一步: 我正在SQL Server表上编写查询,希望获取当前日历年和上一日历年的所有记录。现在,我需要一个查询来返回2008年1月1日到今天之间的所有记录。但到了2010年1月1日,我希望它能返回不早于2009年的记录 基本上,我想将当前日期限定为年初,然后减去1 在翻阅了一些SQL Server文档后,我得出了以下结论: WHERE create_date >= CAST((CAST(YEAR(GETDATE()) AS int) -1) AS varchar) 但
WHERE create_date >= CAST((CAST(YEAR(GETDATE()) AS int) -1) AS varchar)
但感觉有点难看。有更好的方法吗?为什么不在创建日期上使用年份功能呢
WHERE YEAR(create_date) >= (YEAR(GETDATE()) -1)
这假设(正如您所做的那样)数据库中没有大于今天日期的记录为什么不在create_date上使用year函数呢
WHERE YEAR(create_date) >= (YEAR(GETDATE()) -1)
这假设(正如您所做的那样)数据库中没有比今天日期更大的记录我建议为变量分配一个日期为lastyear-01-01的变量,或者为它生成一个UDF,或者类似的方法
DECLARE @startOfLastYear DATETIME
SET @startOfLastYear = CAST(YEAR(GETDATE()) - 1 AS VARCHAR) + '-01-01'
然后执行查询:
WHERE create_date >= @startOfLastYear
原因有两个:
我建议指定一个日期为lastyear-01-01的变量,或者为它创建一个自定义项,或者类似的东西
DECLARE @startOfLastYear DATETIME
SET @startOfLastYear = CAST(YEAR(GETDATE()) - 1 AS VARCHAR) + '-01-01'
然后执行查询:
WHERE create_date >= @startOfLastYear
原因有两个: