Преобразовать строку в дату-время в год и месяц SQL - PullRequest
1 голос
/ 11 февраля 2010

Как мне получить год (2009) и месяц (12) из ​​строки datetime, следующие дают мне правильную полную дату, но неверный год (1905-07-03 00: 00: 00.000) и месяц (1900-01- 13 00: 00: 00.000). Я попытался изменить YYYY на год, а MM на месяц.

Declare @date dateTime;
Declare @CurrentYear datetime;
Declare @CurrentMonth datetime;
Select @date = CONVERT ( datetime , '20091231' ,112 );
Select @CurrentYear = DATEPART(YYYY,@date);
--Select @CurrentYear = YEAR(@Date);  <---- still wrong year
Select @CurrentMONTH = DATEPART(MM,@date);
--Select @CurrentMonth = MONTH(@date);   <---- still wrong year
select @date as fulldate, @CurrentYear as [year], @CurrentMonth as [Month];

Пока ни одно из предложений SO не сработало.

С уважением K

Ответы [ 2 ]

1 голос
/ 11 февраля 2010

Если вы хотите использовать DATEPART, используйте YEAR (YY or YYYY) или MONTH (M or MM) для ваших частей года и месяца:

DECLARE @date DATETIME
SET @date = CAST('20091231' as DATETIME)   -- ISO-8601 format always works

SELECT 
    DATEPART(YEAR, @date),    -- gives 2009
    DATEPART(YYYY, @date),    -- gives 2009
    DATEPART(MONTH, @date),   -- gives 12
    DATEPART(MM, @date)       -- gives 12

Помогает ли это вообще ??

1 голос
/ 11 февраля 2010

это работает?

 declare @d datetime
 select @d = '20091231'

 select YEAR(@d),MONTH(@d),  year(getdate()) as CurrentYear
...