6

I'm playing around with manipulating a datetime variable. I can't seem to find a way to update a datetime variable year to the current year.

For example I have

2007-12-01 00:00:00.000

But I would like that to be

2012-12-01 00:00:00.000    (The current year were in)

I've been playing with datediff, but I can't seem to nail it.

Any advice would be appreciated.

Thanks

marc_s
  • 732,580
  • 175
  • 1,330
  • 1,459
JGreasley
  • 301
  • 4
  • 12

3 Answers3

9
DECLARE @date datetime = '2007-01-09T12:34:56'
SELECT @date = DATEADD(yyyy, DATEDIFF(yyyy, @date, GETDATE()), @date)

SELECT @date
AdaTheDev
  • 142,592
  • 28
  • 206
  • 200
1

Maybe something like this:

For sql server 2008+

DECLARE @date DATETIME='2007-12-01 00:00:00.000'
SET @date=DATEADD(year,DATEDIFF(year,@date,GETDATE()),@date)

For sql server 2005

DECLARE @date DATETIME
SET @date='2007-12-01 00:00:00.000'
SET @date=DATEADD(year,DATEDIFF(year,@date,GETDATE()),@date)
Arion
  • 31,011
  • 10
  • 70
  • 88
0

Here's a simple way:

select @yourDate = dateadd(year, datepart(year, getdate()) - datepart(year, @yourDate), @yourDate)
Alejandro B.
  • 4,807
  • 2
  • 33
  • 61