可以避免在QUERY中重复表达式

Jin*_*Kim 1 sql t-sql sql-server sql-server-2008-r2

我必须以奇怪的格式显示时间.例如,如果时间是15:30:45.5000,我需要显示"153045.5".

为此,我有以下查询:

SELECT  LEFT(CONVERT(varchar(20), GETDATE(), 114), 2) +     
   SUBSTRING(CONVERT(varchar(20), GETDATE(), 114), 4, 2) +   
   SUBSTRING(CONVERT(varchar(20), GETDATE(), 114), 7, 2) + '.' + 
   SUBSTRING(CONVERT(varchar(20), GETDATE(), 114), 10, 1);
Run Code Online (Sandbox Code Playgroud)

有什么我可以做的,以避免重复表达CONVERT(varchar(20),GETDATE(),114)?

编辑:

我在这里看到了一个非常酷的答案,在我刷新页面之后由于某种原因被删除了,但它让我想到了一个替代解决方案:

SELECT REPLACE(RIGHT(CONVERT(varchar(21), getdate(), 126), 10), ':', '')
Run Code Online (Sandbox Code Playgroud)

虽然这个答案并没有以通用的方式解决原始问题,但它仍然以不同的方式解决了我的问题.

Sha*_*nce 5

除了其他答案中的函数,您还可以在公用表表达式(CTE)或内联视图中计算部分结果:

; WITH gd(getDate_114)
     AS (SELECT CONVERT(VARCHAR(20), GETDATE(), 114))
SELECT LEFT(getDate_114, 2)
    + SUBSTRING(gd.getDate_114, 4, 2) 
    + SUBSTRING(gd.getDate_114, 7, 2)
    + '.'
    + SUBSTRING(gd.getDate_114, 10, 1)
FROM gd
Run Code Online (Sandbox Code Playgroud)