我有一個表中日期和時間戳記一起記錄,我只想在10個字符的輸出中顯示日期。此外,我想返回空白在01/01/1800的字段中的某些日期。轉換日期格式以消除時間戳
當前表格格式爲2013-06-28 00:00:00:000 我只想要日期。我正在使用RTRIM功能,但它保持錯誤。
請多關照
我有一個表中日期和時間戳記一起記錄,我只想在10個字符的輸出中顯示日期。此外,我想返回空白在01/01/1800的字段中的某些日期。轉換日期格式以消除時間戳
當前表格格式爲2013-06-28 00:00:00:000 我只想要日期。我正在使用RTRIM功能,但它保持錯誤。
請多關照
試試這個:
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呃。
@myvalue假設是 – khan16 2015-02-05 15:45:02
@ khan16 - 你的價值。 – 2015-02-05 15:58:29
你可以這樣做:
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'的值沒有時間分量。對於默認極值來說這似乎是合理的。
不順心的由我寫到一個腳本這 – khan16 2015-02-05 15:47:34
的方式「日期」,這是我現在有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
@ khan16。 。 。 'date'是SQL Server中的保留字。它只是作爲一個佔位符,無論你的列名是什麼。你想按照這個答案中指定的方式使用'convert()'。 – 2015-02-05 21:49:48
當你說「show」時:你是指數據在報告或屏幕上的顯示方式?在這種情況下,在報告或屏幕本身中進行格式化通常更容易。 T-SQL對於複雜的格式化並不是一個好的工具。 – 2015-02-05 18:10:05