SQL Server:在选择日期等于当前日期时选择使用不同的日期格式

时间:2014-09-13 07:08:25

标签: sql sql-server datetime select

我有一个带有列的表#34; modTime"格式化为datetime。 要从此列中获取日期,请在我的Select中使用以下行,该行以DD MMM YYYY格式返回日期:

CONVERT(VARCHAR(11), G.modTime, 106) AS modTime

有什么方法可以在与当前日期匹配时以不同的格式(如下所示)返回日期,否则只能使用上述格式?这将日期返回为今天hh:mm。

('Today at ' + CONVERT(VARCHAR(5), G.modTime, 108)) AS modTime

当我单独使用它们时,两种方式都有效,但我找不到使用CASE等组合它们的方法。

蒂姆,非常感谢你提供任何帮助。

2 个答案:

答案 0 :(得分:2)

你可以试试这个:

select iif(G.modTime=getdate(),('Today at ' + CONVERT(VARCHAR(5), G.modTime, 108)),CONVERT(VARCHAR(11),G.modTime, 106) ) from <table name>

请注意,IIF仅适用于SQL Server 2012或更高版本。

http://msdn.microsoft.com/en-IN/library/hh213574.aspx

对于旧版本,这篇文章可能会对您有所帮助:

SQL Server 2008 IIF statement does not seem enabled

答案 1 :(得分:1)

你将使用equals与getdate()匹配,并且你需要将getdate()的时间设置为午夜

select
      case when G.modTime >= dateadd(day, datediff(day,0, getdate() ), 0)
                then ('Today at ' + CONVERT(VARCHAR(5), G.modTime, 108)) 
           else
                CONVERT(VARCHAR(11), G.modTime, 106)
      end  AS modTime
from G

上面我使用过:dateadd(day,datediff(day,0,getdate())

相反,您可以使用:cast(getdate()作为日期)

两者都具有给你&#34;今天&#34;在00:00:00