我想显示日期时间,例如。 Dec 01,09 11:22:45 PM使用SQL查询
目前我的格式为:
DATENAME(Month, (((MachineGroups.TimeAdded*10000000)+ 621355968000000000) -599266080000000000) / 864000000000) + SPACE(1) + DATENAME(d, (((MachineGroups.TimeAdded*10000000)+ 621355968000000000) - 599266080000000000) / 864000000000) +', ' + DATENAME(year, (((MachineGroups.TimeAdded*10000000)+621355968000000000) - 599266080000000000) /864000000000) + SPACE(1)+DATENAME (hour,(((MachineGroups.TimeAdded*10000000)+621355968000000000) - 599266080000000000) / 864000000000) + ':' +DATENAME (minute,(((MachineGroups.TimeAdded*10000000)+ 621355968000000000) - 599266080000000000) / 864000000000) + ':' +DATENAME (second,(((MachineGroups.TimeAdded*10000000)+ 621355968000000000) - 599266080000000000) / 864000000000) AS Expr2
使用以上我得到例如。 2009年12月1日23:22:45
我尝试使用“MMM”和“yy”的cuatom formata,但它不起作用
任何建议??? 感谢
我无法使用上面的Datename属性来获得我想要的格式吗?
答案 0 :(得分:0)
将值作为通用日期时间对象返回并在UI中对其进行格式化会更容易,更有效。
您从数据库返回格式化日期的动机是什么?
答案 1 :(得分:0)
除了AM / PM之外,这将为您提供一切:
声明@myDate datetime 设置@myDate = getdate() 选择LEFT(DATENAME(MM,@ myDate),3)+''+ 右('0'+ DATENAME(DD,@ myDate),2)+','+ 右(DATENAME(YY,@ myDate),2)+''+ convert(varchar,(DATEPART(hour,@ myDate)))+':'+ convert(varchar,(DATEPART(分钟,@ myDate)))+':'+ convert(varchar,(DATEPART(second,@ myDate) ))
有多种方法可以实现AM / PM值,其中包括:
的子串SELECT convert(varchar,getdate(),109)
答案 2 :(得分:0)
除了MONTHNAME(您已经使用过),请查看DATEPART。它也离CONVERT格式9 [via CONVERT (VARCHAR(20), @datetime, 9)
]不远,所以你也可以操纵它。
另一种选择是使用两个CONVERT ...这可以提供你想要的东西,但时间是24小时格式:
SELECT CONVERT(VARCHAR(20), @datetime, 107) + ' ' + CONVERT (VARCHAR(20), @datetime, 108)
使用不同的转换功能和一些字符串操作来获得12小时的AM / PM。或者做这样的事情:
SELECT CAST(DATEPART(hh, @datetime) - 12 AS VARCHAR)
+ ':' + CAST(DATEPART(mi, @datetime) AS VARCHAR)
+ ':' + CAST(DATEPART(ss, @datetime) AS VARCHAR)
+ CASE WHEN DATEPART(hh, @datetime) BETWEEN 0 AND 11 THEN ' AM' ELSE ' PM' END
这个或操纵CONVERT的输出都不是很好,但它们是你最好的选择。
HOWEVER: ,正如其他人所指出的那样,这通常更好地完成客户端/ UI端而不是SQL端。
答案 3 :(得分:0)
您可以找到所有受支持的SQL Server formats here。
要选择等效于Dec 1, 09 11:22:45 PM
的格式,您可以使用格式为7的日期:Mon dd, yy
。时间可以从格式109汇编:mon dd yyyy hh:mi:ss:mmmAM (or PM)
。结合:
select
convert(varchar(10), getdate(), 7) +
' ' +
stuff(
substring(
convert(varchar(32), getdate(), 109)
,13,14) -- Substring HH:mi:ss.mmmAM
,9,4,' ') -- Replace .mmm by one space
这应该打印:
Nov 24, 09 4:58:36 PM
09
和4
之间的两个空格中的第二个保留两个小时,如下午11:59:59。 :)