我的示例查询是
SELECT D30.SPGD30_LAST_TOUCH_Y
from CSPGD30_TRACKING D30
我给定的日期格式就像"2013-01-01 00:00:00.000"
. 我需要将此日期格式转换为"mm/dd/yyyy hh:mm AM/PM"
. 你对此有什么想法吗?
我的示例查询是
SELECT D30.SPGD30_LAST_TOUCH_Y
from CSPGD30_TRACKING D30
我给定的日期格式就像"2013-01-01 00:00:00.000"
. 我需要将此日期格式转换为"mm/dd/yyyy hh:mm AM/PM"
. 你对此有什么想法吗?
我认为没有单一的格式可以同时提供它们。试试这个使用Convert
; Sql-Demo
declare @mydate datetime = getdate()
select convert(varchar(10),@mydate, 101) + right(convert(varchar(32),@mydate,100),8)
| COLUMN_0 |
----------------------
| 02/22/2013 9:36AM |
FORMAT() 函数从 2012 版开始可用。升级后就可以使用了
select FORMAT(@date,'MM/dd/yyyy hh:mm:s tt')
用这个
select CONVERT(VARCHAR(10), mydate, 101) + ' ' + RIGHT(CONVERT(VARCHAR, mydate, 100), 7) from tablename
试试这个
SELECT convert(varchar(20), GetDate(), 0);
仅提取 AM/PM
substring(convert(varchar(30), GetDate(), 9), 25, 2);
使用以下方案获取日期、时间、日、月、年、小时、分钟、秒、AM/PM
:)
SELECT UpdatedOn ,
CONVERT(varchar,UpdatedOn,100) DateTime,
CONVERT(varchar,UpdatedOn,10) Date ,
CONVERT(varchar,UpdatedOn,108) Time ,
substring(CONVERT(varchar,UpdatedOn,106),1,2) Day,
substring(CONVERT(varchar,UpdatedOn,106),4,3) CMonth,
substring(CONVERT(varchar,UpdatedOn,105),4,2) NMonth,
substring(CONVERT(varchar,UpdatedOn,106),8,4) Year,
left(right(CONVERT(varchar,UpdatedOn,100),7),2) Hours_12,
substring(CONVERT(varchar,UpdatedOn,108),1,2) Hours_24,
substring(CONVERT(varchar,UpdatedOn,108),4,2) Minutes,
substring(CONVERT(varchar,UpdatedOn,108),7,2) Second,
right(CONVERT(varchar,UpdatedOn,100),2) AM_PM
FROM dbo.DeviceAssignSim
WHERE AssignSimId=55;
使用该convert
方法格式化一个datetime
值。例子:
select convert(varchar(20), D30.SPGD30_LAST_TOUCH_Y, 101)
第三个参数确定格式。您可以在cast and convert 文档中找到可用的格式。
用这个
Select (Convert(Varchar,GetDate(),101))+' '+(Right(('0'+(LTrim((Left((Right((Convert(Varchar,GetDate(),100)),7)),5))))),5))+' '+(Right((Convert(Varchar,GetDate(),100)),2))
我意识到这是一个有 8 年历史的问题,但它以多种方式得到了回答,但没有一个是足够简单的。我发现这很简单,并且与用户要求的内容相匹配(年份是两位数,并且存在秒数),假设他得到的日期来自 GETDATE(),这并不重要,但那是我的答案来自哪里。
SELECT CONVERT(varchar, D30.SPGD30_LAST_TOUCH_Y, 22) AS [DateTime]
12/16/20 10:19:18 AM