2015-02-05 34 views
0

我有一個表中日期和時間戳記一起記錄,我只想在10個字符的輸出中顯示日期。此外,我想返回空白在01/01/1800的字段中的某些日期。轉換日期格式以消除時間戳

當前表格格式爲2013-06-28 00:00:00:000 我只想要日期。我正在使用RTRIM功能,但它保持錯誤。

請多關照

+0

當你說「show」時:你是指數據在報告或屏幕上的顯示方式?在這種情況下,在報告或屏幕本身中進行格式化通常更容易。 T-SQL對於複雜的格式化並不是一個好的工具。 – 2015-02-05 18:10:05

回答

0

試試這個:

SELECT CASE CONVERT(DATE, @MyValue) WHEN '01/01/1800' THEN NULL ELSE CONVERT(DATE, @MyValue) END 

或者如果你喜歡:

DECLARE @DateOnlyValue DATE 
SET @DateOnlyValue = CONVERT(DATE, @MyValue) 
SELECT CASE @DateOnlyValue WHEN '01/01/1800' THEN NULL ELSE @DateOnlyValue END 

後者只是DRY呃。

+0

@myvalue假設是 – khan16 2015-02-05 15:45:02

+0

@ khan16 - 你的價值。 – 2015-02-05 15:58:29

0

你可以這樣做:

select (case when datecol > '1800-01-01' then convert(varchar(10), datecol, 121) end) 

這將值轉換爲表格YYYY-MM-DD的字符串。

這使用NULL作爲「空白」。如果你想要一個空字符串:

select (case when datecol > '1800-01-01' 
      then convert(varchar(10), datecol, 121) 
      else '' 
     end) 

這也假定'1800-01-01'的值沒有時間分量。對於默認極值來說這似乎是合理的。

+0

不順心的由我寫到一個腳本這 – khan16 2015-02-05 15:47:34

+0

的方式「日期」,這是我現在有CASE WHEN A.svcdt1 =「18000101」 THEN 轉換(爲nvarchar(20),A.SVCDT1)+」 - '+轉換(nvarchar(20),A.SVCDT1) ELSE'' END AS Service_Facility,並獲得以下輸出Jan 1 1800 12:00 AM-Jan 1 1800 12:00 AM所需的輸出將只是日期這種格式2012年12月14日(10個字符的限制)和1800年的所有日期爲空白 – khan16 2015-02-05 16:02:29

+1

@ khan16。 。 。 'date'是SQL Server中的保留字。它只是作爲一個佔位符,無論你的列名是什麼。你想按照這個答案中指定的方式使用'convert()'。 – 2015-02-05 21:49:48

相關問題