我有一个表中日期和时间戳记一起记录,我只想在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