2015-02-05 47 views
0

我有以下查詢:TSQL - 使鑄造日期時間爲varchar不返回友好的格式

SELECT TOP 3 
    Person.Name AS PersonName, 
    SUBSTRING(CAST(Person.BirthDate AS varchar(38)), 1, 2) AS CenteryBorn, 
    Person.BirthDate AS CompleteDateTimeBorn 
FROM Person  

我想是這樣的,與具有日期時間的前兩位CenteryBorn列:

PersonName CenteryBorn CompleteDateTimeBorn 

Fred   20   2000-03-16 00:00:00.000 

Tim   19   1900-09-27 00:00:00.000 

Jenny   19   1901-06-20 00:00:00.000 

我所得到的卻是這樣的:

PersonName CenteryBorn CompleteDateTimeBorn 

Fred   Ma   2000-03-16 00:00:00.000 

Tim   Se   1900-09-27 00:00:00.000 

Jenny   Ju   1901-06-20 00:00:00.000 

完整的字符串代表似乎最終成爲Mar 16 2000 12:00AM

有沒有辦法以CAST作爲字符串,但採用默認格式而不是友好的?

+0

貌似月的兩個第一字符的。子串從8開始2. – jarlh 2015-02-05 14:53:54

回答

1

如何使用:

YEAR(BirthDate)/1000 
+0

謝謝!但是,無論出於何種原因,當我嘗試將其附加到另一個字符串時,似乎不起作用,例如:「YEAR(BirthDate)/ 1000」+ Person.RestOfDate – user1531921 2015-02-05 15:03:40

+0

CAST(YEAR(BirthDate)/ 100 as VARCHAR(100)) – 2015-02-05 15:04:45

0

您可以使用日期部分功能,而不是

substring(cast(datepart(y,person.birthdate) as varchar),1,2) 
0

使用SELECT YEAR(Person.BirthDate)/100 AS CenteryBorn

+0

世紀將是'(年(Person.BirthDate)+99)/ 100'。第一個世紀是1到100年.20世紀將是1901到2000年。 – HABO 2015-02-05 15:20:23

+0

是的,你是對的,但我只是給了OP想要的測試數據。此外,他接受了不正確的答案:) – 2015-02-05 15:27:37

相關問題