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

ich diese Abfrage bin Ausführung, wo ich Jahr 2013 bin immer wenn die heutige Datum geliefert. Ich möchte die Abfrage nur 13 von 2013 zurückgeben. Wie kann ich das erreichen?Anfahrt Jahr im Format JJ in SQL Server

Antwort

15

Versuchen

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

Beispielausgabe:

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

Hier ist SQLFiddle Demo

+0

zu gut. Danke .. es hat funktioniert. – Ankur

+0

Sie sind herzlich willkommen. Viel Glück :) – peterm

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

Wie wäre;

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

Vorausgesetzt, dass Sie nur mit zwei Ziffern ein Jahr 2100 Problem Speicherung von bis sind, dann zwischen 2000 und 2099. In diesem Fall funktioniert, subtrahiert nur 2000 Ich nehme an, Sie nur Code benötigen, die:

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

Sie können hier eine sehr hilfreiche Funktion es

Aufruf verwenden wie dieses

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

Funktion

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

für SQL Server 2012:

SELECT FORMAT(@Creation_Date, 'yy') 
0

Eigentlich in SQLServer können Sie das Format Argument der Funktion Convert zu 1 Die Syntax konvertieren gesetzt verwenden (varchar (10) wird, @YourDate , 1)

Verwandte Themen