2015-02-05 44 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