Ref*_*din 1 t-sql datetime sql-server-2008
以下是我唯一的选择吗?我希望有一种更好,更清洁的方法来实现这一目标.
这是,我的日期需要最终格式化如此 - > 201301080105,于2013年1月8日凌晨1点05分.
SELECT SUBSTRING(REPLACE(CONVERT(varchar, GETDATE(), 111), '/','') + REPLACE(CONVERT(varchar, GETDATE(), 108), ':',''),0,13) AS 'My Formatted Date'
这比原版少了一些斩波,但我坚持认为最好在你的表示层中做到这一点 - 或者在任何地方,实际上,使用一般的格式化设施,而不是数据库:
select CONVERT(varchar(20),myDate,112) + REPLACE(CONVERT(varchar(5),myDate,108),':','')
Run Code Online (Sandbox Code Playgroud)
观察:112是用于转换日期部分的更好的样式,因为它已经没有分隔符.并且,如果您指定转换的长度并且转换的字符串不适合,则其余的将被丢弃.这就是我从时间中消除秒部分的方式,只允许空间持续数小时和数分钟.但是没有样式在时间部分不包括分隔符.
这是YYYYMMDDHHMMSS
SELECT CONVERT(VARCHAR(8), GETDATE(), 112) + REPLACE(CONVERT(varchar, GETDATE(), 108), ':','')
Run Code Online (Sandbox Code Playgroud)
对于YYYYMMDDHHMM
SELECT CONVERT(VARCHAR(8), GETDATE(), 112) + LEFT(REPLACE(CONVERT(varchar, GETDATE(), 108), ':',''),4)
Run Code Online (Sandbox Code Playgroud)
要么
SELECT CONVERT(VARCHAR(8), GETDATE(), 112) + REPLACE(LEFT(CAST(GETDATE() AS TIME), 5), ':', '')
Run Code Online (Sandbox Code Playgroud)