在SQL中採用日期變量並將其設置爲年初和年底的最佳方式是什麼?SQL - 修改日期
declare @calcDate date = '7/7/2016'
如何使用@calcDate獲得'1/1/2016'和'12/31/2016'?
在SQL中採用日期變量並將其設置爲年初和年底的最佳方式是什麼?SQL - 修改日期
declare @calcDate date = '7/7/2016'
如何使用@calcDate獲得'1/1/2016'和'12/31/2016'?
DECLARE @calcDate date = '7/7/2016'
SELECT
DATEADD(yy, DATEDIFF(yy,0,@calcDate), 0) AS BeginningOfYear,
DATEADD(yy, DATEDIFF(yy,0,@calcDate) + 1, -1) AS EndOfYear
這個答案看起來是正確的爲什麼沒有評論的投票? –
@DaveKelly不是我的失望,但是這個答案是在沒有關於RDBMS的標籤時發佈的,所以它可能對op來說是錯誤的。在這種情況下,它不是 – Lamak
我只想用datefromparts()
:
select datefromparts(year(@calcdate), 1, 1) as soy,
datefromparts(year(@calcdate), 12, 31) as eoy
SQL Server早期版本的需要奇怪日期運算。此功能在SQL Server 2012+中可用(請參閱here)。
對我來說似乎沒有真正的「計算」在這裏完成,因爲今年的第一天總是1/1,最後一天總是12/31。我們只需要在問題這些追加的一年:
declare @calcDate date = '7/7/2016'
select cast(cast(year(@calcDate) as varchar(4)) + '0101' as date)
select cast(cast(year(@calcDate) as varchar(4)) + '1231' as date)
結果:
2016-01-01
2016-12-31
year
是在SQL Server 2008及更高版本。
請使用您正在使用的數據庫引擎的標籤。它甚至建議你在詢問 – Lamak
時這樣做,我不確定我是否理解你在問什麼。我應該添加哪些其他標籤? – Anagins
[sql]是語言,你可以使用SQL Server,MySQL,Oracle,Postgresql等。答案取決於你正在使用哪一個,所以在你的問題中加上相應的標籤 – Lamak