2013-08-09 12 views
7
select Year(Creation_Date) 
from Asset_Creation 
where Creation_Date = @Creation_Date 

sto eseguendo questa query in cui sto ottenendo anno come 2013 a fonti data odierna. Voglio che la query restituisca solo 13 del 2013. Come posso ottenerlo?Come arrivare l'anno in formato AA in SQL Server

risposta

15

Prova

SELECT RIGHT(YEAR(Creation_Date), 2) YY 
    FROM Asset_Creation 
WHERE ... 

Esempio di output:

 
| YY | 
------ 
| 10 | 
| 11 | 
| 13 | 

Ecco SQLFiddle demo

+0

troppo buono. Grazie .. ha funzionato. – Ankur

+0

Sei il benvenuto. In bocca al lupo :) – peterm

1
select SUBSTRING(Year(Creation_Date), 2, 2) 
from Asset_Creation 
where Creation_Date = @Creation_Date 
1

ne dite;

SUBSTRING(YEAR(Creation_Date), 3, 2) 
2

Dato che si sta accumulando un problema 2100 utilizzando solo due cifre, quindi presumo è necessario solo codice che funziona tra il 2000 e il 2099. In questo caso, basta sottrarre 2000:

select Year(Creation_Date) - 2000 
from Asset_Creation 
where Creation_Date = @Creation_Date 
1

è possibile utilizzare una funzione molto utile qui

chiamata in questo modo

SELECT dbo.fnFormatDate (getdate(), ‘MM/DD/YY’) 

Funzione

CREATE FUNCTION dbo.fnFormatDate (@Datetime DATETIME, @FormatMask VARCHAR(32)) 
RETURNS VARCHAR(32) 
AS 
BEGIN 
    DECLARE @StringDate VARCHAR(32) 
    SET @StringDate = @FormatMask 
    IF (CHARINDEX (‘YYYY’,@StringDate) > 0) 
     SET @StringDate = REPLACE(@StringDate, ‘YYYY’, 
         DATENAME(YY, @Datetime)) 
    IF (CHARINDEX (‘YY’,@StringDate) > 0) 
     SET @StringDate = REPLACE(@StringDate, ‘YY’, 
         RIGHT(DATENAME(YY, @Datetime),2)) 
    IF (CHARINDEX (‘Month’,@StringDate) > 0) 
     SET @StringDate = REPLACE(@StringDate, ‘Month’, 
         DATENAME(MM, @Datetime)) 
    IF (CHARINDEX (‘MON’,@StringDate COLLATE SQL_Latin1_General_CP1_CS_AS)>0) 
     SET @StringDate = REPLACE(@StringDate, ‘MON’, 
         LEFT(UPPER(DATENAME(MM, @Datetime)),3)) 
    IF (CHARINDEX (‘Mon’,@StringDate) > 0) 
     SET @StringDate = REPLACE(@StringDate, ‘Mon’, 
            LEFT(DATENAME(MM, @Datetime),3)) 
    IF (CHARINDEX (‘MM’,@StringDate) > 0) 
     SET @StringDate = REPLACE(@StringDate, ‘MM’, 
        RIGHT(’0′+CONVERT(VARCHAR,DATEPART(MM, @Datetime)),2)) 
    IF (CHARINDEX (‘M’,@StringDate) > 0) 
     SET @StringDate = REPLACE(@StringDate, ‘M’, 
         CONVERT(VARCHAR,DATEPART(MM, @Datetime))) 
    IF (CHARINDEX (‘DD’,@StringDate) > 0) 
     SET @StringDate = REPLACE(@StringDate, ‘DD’, 
         RIGHT(’0′+DATENAME(DD, @Datetime),2)) 
    IF (CHARINDEX (‘D’,@StringDate) > 0) 
     SET @StringDate = REPLACE(@StringDate, ‘D’, 
            DATENAME(DD, @Datetime)) 
RETURN @StringDate 
END 
GO 
5

Per SQL Server 2012:

SELECT FORMAT(@Creation_Date, 'yy') 
0

realtà in SQLServer è possibile utilizzare l'argomento format della funzione Convert impostato a 1 La sintassi verrà Convert (varchar (10), @YourDate , 1)

Problemi correlati