Sql server 2008 在T-SQL中将DateTime转换为yyyyMMddHHmm

Sql server 2008 在T-SQL中将DateTime转换为yyyyMMddHHmm,sql-server-2008,tsql,datetime,Sql Server 2008,Tsql,Datetime,像下面这样的东西是我唯一的选择吗?我希望有一个更好、更干净的方法来实现这一点 也就是说,我的日期需要在2013年8月1日凌晨1:05以-->201301080105的格式结束 选择SUBSTRING(REPLACE(CONVERT(varchar,GETDATE(),111),“/”,”)+REPLACE(CONVERT(varchar,GETDATE(),108),“:”,“,”),0,13)作为“我的格式化日期”这比原来的要少一些切分,但我坚持我的意见,最好在您的表示层或任何地方,真的,使用

像下面这样的东西是我唯一的选择吗?我希望有一个更好、更干净的方法来实现这一点

也就是说,我的日期需要在2013年8月1日凌晨1:05以-->201301080105的格式结束


选择SUBSTRING(REPLACE(CONVERT(varchar,GETDATE(),111),“/”,”)+REPLACE(CONVERT(varchar,GETDATE(),108),“:”,“,”),0,13)作为“我的格式化日期”

这比原来的要少一些切分,但我坚持我的意见,最好在您的表示层或任何地方,真的,使用通用格式化工具,而不是数据库:

select CONVERT(varchar(20),myDate,112) + REPLACE(CONVERT(varchar(5),myDate,108),':','')

观察:112更好地用于转换日期部分,因为它已经没有分隔符。而且,如果您为转换指定了一个长度,而转换后的字符串不适合,那么其余的字符串将被丢弃。这就是我如何从时间中消除秒的部分,只允许几小时和几分钟的空间。但是,没有一种样式在时间部分不包含分隔符。

这比原始样式的切分要少一些,但我坚持我的意见,即最好在表示层中执行此操作,或者在任何地方执行此操作,实际上,使用通用格式设置,而不是DB:

select CONVERT(varchar(20),myDate,112) + REPLACE(CONVERT(varchar(5),myDate,108),':','')
观察:112更好地用于转换日期部分,因为它已经没有分隔符。而且,如果您为转换指定了一个长度,而转换后的字符串不适合,那么其余的字符串将被丢弃。这就是我如何从时间中消除秒的部分,只允许几小时和几分钟的空间。但是没有一种样式在时间部分不包含分隔符。

这是YYYYMMDDHHMMSS

SELECT CONVERT(VARCHAR(8), GETDATE(), 112) + REPLACE(CONVERT(varchar, GETDATE(), 108), ':','')
YYYYMMDDHHMM

SELECT CONVERT(VARCHAR(8), GETDATE(), 112) + LEFT(REPLACE(CONVERT(varchar, GETDATE(), 108), ':',''),4)

这是YYYYMMDDHMMSS

SELECT CONVERT(VARCHAR(8), GETDATE(), 112) + REPLACE(CONVERT(varchar, GETDATE(), 108), ':','')
YYYYMMDDHHMM

SELECT CONVERT(VARCHAR(8), GETDATE(), 112) + LEFT(REPLACE(CONVERT(varchar, GETDATE(), 108), ':',''),4)


请尝试此格式的YYYYMMDDHHMIS

SELECT replace(replace(replace(CONVERT(VARCHAR(19), GETDATE(), 120),'-',''),' ',''),':','')

请尝试此格式的YYYYMMDDHHMIS

SELECT replace(replace(replace(CONVERT(VARCHAR(19), GETDATE(), 120),'-',''),' ',''),':','')

在SQL Server 2012+和Azure SQL数据库中,您可以使用

SELECT FORMAT(GETDATE(), 'yyyyMMddHHmmss')

尽管这不适用于Azure SQL数据仓库。

在SQL Server 2012+和Azure SQL数据库中,您可以使用

SELECT FORMAT(GETDATE(), 'yyyyMMddHHmmss')

尽管这不适用于Azure SQL数据仓库。

通常最好在表示层而不是数据库中进行此类格式化-尽量将datetimes保持为datetimes。通常最好在表示层而不是数据库中进行此类格式化-尽量将datetimes保持为datetimesdatetimes尽可能长。谢谢,不幸的是我不能有SS,这就是为什么我必须做子字符串()谢谢,不幸的是我不能有SS,这就是为什么我必须做子字符串()我使用了你的答案和我的原始-->
CONVERT(varchar,GETDATE(),112)+REPLACE(CONVERT(varchar(5),GETDATE(),108),“:”,“”)作为“处理日期时间”
这样感觉更干净。不幸的是,在我怀疑是否有人愿意听到的情况下,把它放在这里是有道理的。也就是说,我通常同意你的看法,并感谢你的回答。@RefractedPaladin-嗯,你的原始答案使用的是
myDate
,而不是
GETDATE()
,所以这就是我在我的答案中所做的(尽管我实际上是在那里用
GETDATE()
写的)。我使用了你的答案和我的原始答案的变体-->
CONVERT(varchar,GETDATE(),112)+替换(CONVERT(varchar(5),GETDATE(),108),':',')作为“处理日期时间”
这样感觉更干净。不幸的是,在我怀疑任何人都不愿意听到的情况下,把它放在这里是很有意义的。也就是说,我通常同意你的看法,并感谢你的回答。@RefractedPaladin-你原来使用的是
myDate
而不是
GETDATE()
,这就是我在答案中的内容(尽管我实际上是在那里用
GETDATE()
写的)。