我有一个带有列的表#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等组合它们的方法。
蒂姆,非常感谢你提供任何帮助。答案 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
对于旧版本,这篇文章可能会对您有所帮助:
答案 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