Sql 转换日期格式以消除时间戳

Sql 转换日期格式以消除时间戳,sql,sql-server-2008,Sql,Sql Server 2008,我有一个表,其中日期和时间戳一起记录,我只想在10个字符的输出中显示日期。此外,我还想将字段中的一些日期返回为空,这些日期为1800年1月1日 当前表格格式为2013-06-28 00:00:00:000 我只想知道日期。我用的是RTRIM函数,但它总是出错 提前谢谢你试试这个: SELECT CASE CONVERT(DATE, @MyValue) WHEN '01/01/1800' THEN NULL ELSE CONVERT(DATE, @MyValue) END 或者,如果您愿意: D

我有一个表,其中日期和时间戳一起记录,我只想在10个字符的输出中显示日期。此外,我还想将字段中的一些日期返回为空,这些日期为1800年1月1日

当前表格格式为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
后者只是呃。

你可以做:

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”的值没有时间分量。对于默认的极值来说,这似乎是合理的。

@myvalue应该是什么be@khan16--您的值。不喜欢“日期”我将其写入脚本这是我现在遇到的情况,当a.svcdt1='18000101'然后转换(nvarchar(20),a.svcdt1)+'-'+Convert(nvarchar(20),a.svcdt1)ELSE'作为服务结束时,获得以下输出1月1日1800 12:00AM-1月1日1800 12:00AM所需输出将仅为该格式2012年12月14日的日期(限制为10个字符)以及所有1800年的日期blank@khan16 . . . <代码>日期是SQL Server中的保留字。无论你的列名是什么,它都只是一个占位符。您希望使用此答案中指定的方式使用
convert()
。当您说“显示”时:您指的是数据在报表或屏幕上的外观?在这种情况下,通常更容易在报表或屏幕本身中进行格式化。T-SQL并不是一个进行复杂格式化的好工具。