如何从 SQL Server 2008 获取不带冒号的日期时间字符串?

Ed *_*iel 3 sql-server-2008

我试图从 SQL Server 数据库中的日期时间值获取类似“20101231235959”(yyyyMMddhhmmss) 的内容。这是我能想到的最好的方法 - 在去掉冒号后将“yyyyMMdd”与“hh:mm:ss”连接起来:

CONVERT(varchar(25),Batch.ImagedTime,112) + REPLACE(CONVERT(varchar(25),Batch.ImagedTime,108),':','')
Run Code Online (Sandbox Code Playgroud)

背景:我正在从远程仪器中提取批量图像,并希望在拍摄它们时对它们进行组织。本地系统为Windows 7,目录名中不允许使用冒号。如果我能得到的话,我会选择一个 UNIX 时间戳,但更喜欢让这个名字有点正常人可读的......

据我从这个日期时间样式列表中可以看出,没有办法说服 SQL Server 2008 给我一个没有冒号的时间,或者让 Windows 7 让我用它们创建一个目录,所以它是 SQL 中的 string-bashing 或Java 中的字符串攻击。

我错过了一些明显的事情吗?

gbn*_*gbn 5

只需对您当前的方式稍作修改:

REPLACE
    REPLACE
       CONVERT(varchar(20), GETDATE(), 120)
       , ':', '')
    , '-', '')
Run Code Online (Sandbox Code Playgroud)

Java 中的“String bashing”会更好:SQL Server 应该发送原始数据