2015-06-19 3 views
3

У меня есть вызов в SQL Server 2012, что мне нужно было работать на Server 2005 и 2008SQL Server DATEPART за год и месяц

FORMAT(Date, 'yyyyMM') = 201501 является то, что я в настоящее время использую и нужно использовать DATEPART старые версии SQL Server, но не может легко сделать это.

Любая помощь будет очень оценена.

+2

Один из способов преобразования (VARCHAR (6), дата, 112) –

ответ

3

В более ранних версиях SQL Server не имеют FORMAT, так что вам нужно, так что-то вроде

YEAR(Date) = 2015 AND MONTH(Date) = 1 

или что-то подобное, чтобы проверить два условия

+1

Спасибо за ответ, это работало отлично для меня. Способ, которым вызов работает с его получением и информацией в течение 12-месячного периода, поэтому я вызываю это, используя это более 12 строк в вызове SQL, чтобы получить нужную мне информацию. –

1

Должен работать с SQL Server 2005 и 2008

DECLARE @Date DATETIME = GETDATE(); 

SELECT CAST(YEAR(@Date) AS VARCHAR(4)) 
     + RIGHT('00' + CAST(MONTH(@Date) AS VARCHAR(2)),2) 


RESULT: 201606 

Если вы собираетесь использовать его в том, где положение вы можете сделать что-то вроде ...

WHERE YEAR(DateColumn) = 2016 
AND MONTH(DateColumn) = 6 
1

Если вы хотите использовать DATEPART, это должно работать:

CAST(DATEPART(YEAR, CAST('2015-01-05' AS DATETIME)) AS VARCHAR(4)) 
    +RIGHT('00' + CAST(DATEPART(MM, CAST('2015-01-05' AS DATETIME)) AS VARCHAR(2)), 2) 

В качестве альтернативы, вы можете использовать год или месяц, как и другие сообщения предлагают.

1
SELECT CONVERT(NVARCHAR(6),GETDATE(),112) 
Смежные вопросы