添加转换函数时出现SQL语法错误

时间:2018-12-19 04:28:37

标签: sql sql-server visual-studio visual-studio-2010

这有效

SELECT 
    LEFT(DATENAME(DAY, GETDATE()), 3) + '-' +
    LEFT(DATENAME(MONTH, GETDATE()), 3) + ' ' + '-' +
    RIGHT('00' + CAST(YEAR(GETDATE()) AS VARCHAR), 2)

这也有效

SELECT CONVERT(TIME(0), GETDATE())

但是当我将两者结合在一起时,我会得到一个错误

SELECT 
    LEFT(DATENAME(DAY, GETDATE()), 3) + '-' +
    LEFT(DATENAME(MONTH, GETDATE()), 3) + ' ' + '-' +
    RIGHT('00' + CAST(YEAR(GETDATE()) AS VARCHAR), 2) + ' ' 
    CONVERT(TIME(0), GETDATE())

2 个答案:

答案 0 :(得分:1)

您可以在下面尝试-您需要添加+运算符,并将其cast添加到varchar()

SELECT LEFT(DATENAME(Day,GETDATE()),3) + '-' +
LEFT(DATENAME(MONTH,GETDATE()),3) + ' ' + '-' +
RIGHT('00' + CAST(YEAR(GETDATE()) AS VARCHAR),2) + ' ' +
cast(convert(time(0),getDate()) as varchar(10))

答案 1 :(得分:1)

这不能回答您的问题,但是您的第一个查询过于复杂。我不了解日期格式,但是无论您需要什么,这都是一个更简单的方法:

SELECT DATENAME(DAY, GETDATE()) + '-' +
       LEFT(DATENAME(MONTH, GETDATE()), 3) + ' -' +
       RIGHT(DATENAME(YEAR, GETDATE()), 2)

注意:

  • DAY组件不得超过2个字符,因此LEFT(. . . , 3)是不必要的。
  • ' ' + '-'可以简化为' -'
  • 您也可以在一年中使用DATENAME()