Query With Date Ranges
Not sure where you copied this code from, but it looks like it came from a web site that translated minus signs (-) to long dashes (–). You can see this in Management Studio if you turn IntelliSense on:


  


Here is the easy way to compare the same range as the year before:

DECLARE @startdate date = '20170101',
        @enddate   date = '20170212';

SELECT @startdate, DATEADD(YEAR, -1, @startdate),
       @enddate,   DATEADD(YEAR, -1, @enddate);


This compares the same period as last year, but I'm not sure that's what you're after since you are also using the zero date and datediff - not clear why. It does not account for leap year; you'll need to define what should happen if the range involves 2/29 either this year or last year.

When you use those dates in a query, don't do this subtracting 3 milliseconds nonsense - it only leads to problems. If you're trying to get all the data for February 12th even if it has time, then use &lt; DATEADD(DAY, 1, @enddate). Also, don't use YY, just type out YEAR. It is also far easier to get the full range of last year:

-- for SQL Server 2012+
WHERE col &gt;= DATEFROMPARTS(YEAR(@startdate)-1, 1, 1)
  AND col &lt;  DATEFROMPARTS(YEAR(@startdate), 1, 1);

-- for older, unsupported versions:
WHERE col &gt;= DATEADD(YEAR, YEAR(@startdate)-1901, '19000101'),
  AND col &lt;  DATEADD(YEAR, YEAR(@startdate)-1900, '19000101');


To sum up:

DECLARE @startdate date = '20170101',
        @enddate   date = '20170212';

-- sales from that period this year:

SELECT SUM(some_column) FROM dbo.SomeTable
  WHERE some_datetime_column &gt;= @startdate
    AND some_datetime_column &lt;  DATEADD(DAY, 1, @enddate);

-- sales from same period previous year (again, not accounting for leap special case):

SELECT SUM(some_column) FROM dbo.SomeTable
  WHERE some_datetime_column &gt;= DATEADD(YEAR, -1, @startdate)
    AND some_datetime_column &lt;  DATEADD(YEAR, -1, DATEADD(DAY, 1, @enddate));

-- sales from all of previous year:

SELECT SUM(some_column) FROM dbo.SomeTable
  WHERE some_datetime_column &gt;= DATEADD(YEAR, YEAR(@startdate)-1901, '19000101'),
    AND some_datetime_column &lt;  DATEADD(YEAR, YEAR(@startdate)-1900, '19000101');


Suggested reading:


What do BETWEEN and the devil have in common?
Bad Habits to Kick : Using shorthand with date/time operations
#BackToBasics : Dating Responsibly