2012-01-17 141 views
57

我在SQL Server中有一個datetime列,它給了我這樣的數據10/27/2010 12:57:49 pm,我想查詢此列,但只讓SQL Server返回日期月和年 - 例如。 2010 10 27或類似的東西。將SQL Server日期時間轉換爲更短的日期格式

我應該研究哪些功能?

我應該試圖轉換爲另一種日期數據類型嗎?或者簡單地將其轉換爲字符串?

+5

SQL Server的哪個**版**? SQL Server 2008引入了一系列新的與日期和時間相關的數據類型,例如'DATE' - 所以如果你在2008年,你可以使用'SELECT CAST(YourDateTimeColumn AS DATE)',你只需要返回日期 - 沒有時間部分。 – 2012-01-17 20:25:00

+1

看看這篇文章:http://msdn.microsoft.com/en-us/library/ms187928.aspx具體>日期和時間樣式 – Brissles 2012-01-17 20:21:47

+0

@marc_s http://meta.stackoverflow。com/questions/314561/are-votes-to-a-question-comment-higher-valuable-than-votes-for-an-answer – apaul 2016-01-12 21:33:23

回答

84

看一看CONVERT。第三個參數是要轉換爲的日期時間樣式。

例如

SELECT CONVERT(VARCHAR(10), GETDATE(), 103) -- dd/MM/yyyy format 
+10

看起來106是「dd mon yy」 和「dd/MM/yyyy」是103 – nahab 2012-12-07 15:30:10

+2

@nahab您是對的。此外,我必須使用varchar(11)而不是varchar(10)來防止年份縮短(例如,我看到195而不是1953年) – Henrov 2013-06-03 10:31:48

+2

另外,如果要格式化結果,則可以使用101 mm/dd/yyyy – iliketocode 2017-08-11 14:17:04

6

除了CAST和CONVERT,如果您使用的是SQL Server 2008中,你可以轉換成日期類型(或使用該類型下手),然後有選擇地重新轉換爲varchar:

declare @myDate date 
set @myDate = getdate() 
print cast(@myDate as varchar(10)) 

輸出:

2012-01-17 
11

如果您需要在日期格式的結果,你可以使用:

Select Convert(DateTime, Convert(VarChar, GetDate(), 101)) 
35

試試這個:

print cast(getdate() as date)

+3

我喜歡這個選項比接受的答案更多。它以日期格式離開列,以便我的'order by'工作正常,而不僅僅是一個varchar。 – Milne 2017-06-21 16:22:57

+0

這不適用於SQL Server 2005及更早版本。 DATE數據類型是在SQL 2008中引入的。 – JerryOL 2018-01-24 19:35:10

-2

只需添加當日關鍵詞。 例如選擇日期(訂單日期),從訂單中計數(1)where orderdate>'2014-10-01'按日期(訂單日期);

orderdate是日期時間。 此查詢將顯示該日期的訂單而非日期時間。

應用於日期時間列的日期關鍵字會將其更改爲短日期。

4

在SQL Server 2005,我會用這樣的:

select replace(convert(char(10),getdate(),102),'.',' ') 

結果:2015年03 05

0

對於SQL Server的任何版本:DATEADD(DD,DATEDIFF (dd,0,getdate()),0)

1

mm/dd/yy的最短日期格式可以通過以下方式獲得:

Select Convert(varchar(8),getdate(),1) 
相關問題