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

Tôi đang thực hiện truy vấn này nơi tôi nhận được năm là 2013 khi được cung cấp ngày hôm nay. Tôi muốn truy vấn chỉ trả lại 13 trong năm 2013. Làm thế nào tôi có thể đạt được điều đó?Cách nhận năm theo định dạng YY trong SQL Server

Trả lời

15

Hãy thử

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

Mẫu đầu ra:

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

Đây là SQLFiddle bản demo

+0

quá tốt. Cảm ơn .. nó hoạt động. – Ankur

+0

Bạn đang rất hoan nghênh. Chúc may mắn :) – peterm

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

Làm thế nào về;

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

Cho rằng bạn đang lưu trữ lên một vấn đề năm 2100 bằng cách chỉ sử dụng hai chữ số, sau đó tôi giả sử bạn chỉ cần mã mà làm việc từ năm 2000 đến 2099. Trong trường hợp này, chỉ trừ 2000:

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

Bạn có thể sử dụng một chức năng rất hữu ích ở đây

gọi nó như thế này

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

chức năng

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

Đối với SQL Server 2012:

SELECT FORMAT(@Creation_Date, 'yy') 
0

Trên thực tế trong SQLServer bạn có thể dùng tham số định dạng của hàm Chuyển đổi thiết lập để 1 Cú pháp sẽ được chuyển đổi (varchar (10), @YourDate , 1)

Các vấn đề liên quan