Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 获取自定义日期时间格式_Sql Server_Datetime - Fatal编程技术网

Sql server 获取自定义日期时间格式

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

我想使用SQL查询显示日期时间,例如12月1日09:11:22:45 PM

目前我的格式是:

 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的查询更简单,那么您为什么要这样做呢?