Sql server 获取自定义日期时间格式
我想使用SQL查询显示日期时间,例如12月1日09:11:22:45 PM 目前我的格式是:Sql server 获取自定义日期时间格式,sql-server,datetime,Sql Server,Datetime,我想使用SQL查询显示日期时间,例如12月1日09:11:22:45 PM 目前我的格式是: DATENAME(Month, (((MachineGroups.TimeAdded*10000000)+ 621355968000000000) -599266080000000000) / 864000000000) + SPACE(1) + DATENAME(d, (((MachineGroups.TimeAdded*10000000)+ 621355968000000000) - 599266
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格式,但没有成功
有什么建议吗???
谢谢
是否无法使用上面的Datename属性来获取所需的格式???将值作为通用datetime对象返回并在UI中对其进行格式设置更容易、更高效
您从数据库返回格式化日期的动机是什么?这将为您提供除AM/PM之外的所有信息: 声明@myDate datetime 设置@myDate=getdate 选择LEFTDATENAMEMM、@myDate、3+“”+ 右键“0”+DATENAMEDD、@myDate、2+、'+ RIGHTDATENAMEYY,@myDate,2+“”+ convertvarchar,DATEPARThour,@myDate+:'+convertvarchar,DATEPARTminute,@myDate+:'+convertvarchar,DATEPARTsecond,@myDate 有多种方法可实现AM/PM值,其中包括以下子字符串:
选择convertvarchar、getdate、109以及您已经使用的MONTHNAME,签出DATEPART。它也离9的转换格式不远[via CONVERT VARCHAR20,@datetime,9],因此您也可以操作它 另一个选择是使用两个转换。。。这将提供您想要的,但时间是24小时格式:
SELECT CONVERT(VARCHAR(20), @datetime, 107) + ' ' + CONVERT (VARCHAR(20), @datetime, 108)
使用一个不同的转换函数和一点字符串操作,让你的AM/PM达到12小时。或者像这样做:
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的输出都不好,但它们是最好的选择
然而,正如其他人所指出的,这通常在客户端/UI而不是SQL端做得更好。您可以找到所有受支持的SQL Server 要选择相当于12月1日09:11:22:45 PM的格式,可以使用格式7:Mon-dd,yy中的日期。时间可以从格式109:mon-dd-yyyy hh:mi:ss:mmmAM或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 ASP.NET和C与这个问题有什么关系?听起来您只对SQL方面感兴趣。另一方面,你有什么理由希望SQL进行格式化而不是在你的ASP.NET代码中进行格式化?这是因为我已经在很多地方进行了上述格式化。。。现在只需要再修改一点…我已经在很多地方做了上面的格式化。。。现在只需要再修改一下。。。谢谢though@unknown我想你可以。但是使用convert的查询更简单,那么您为什么要这样做呢?