SQL中的Convert函数出错

时间:2013-01-05 17:06:02

标签: sql sql-server-2008 ms-access

我在MSACCESS上编写了以下SQL

SELECT 
    Followup.MRN, Followup.dateentered, Followup.formname, 
    (Followup.MRN & Format([Followup.dateentered], "yyyymmdd") 
     & Followup.formname) 
     AS UniqueMilestoneID
FROM Followup;

它工作正常

现在我在SQL Server中写这个:

SELECT 
   Followup.MRN, Followup.dateentered, Followup.formname, 
   (Followup.MRN & Convert([Followup.dateentered], "yyyymmdd") 
    & Followup.formname) AS UniqueMilestoneID
FROM Followup

我收到以下错误

  

Msg 207,Level 16,State 1,Line 1
  列名称'yyyymmdd'无效。
  Msg 243,Level 16,State 1,Line 1
  类型Followup.dateentered不是已定义的系统类型。

知道如何克服“转换”功能的错误

2 个答案:

答案 0 :(得分:3)

我想你想要这个:

SELECT 
   Followup.MRN, Followup.dateentered, Followup.formname, 
   Followup.MRN + 
      Convert(char(8), Followup.dateentered, 112) + 
      Followup.formname AS UniqueMilestoneID
FROM Followup

以下是date formats in SQL Server的参考。要在SQL Server中连接字符串,还要使用+符号而不是&

答案 1 :(得分:2)

首先,SQL Server中的字符串常量由单引号分隔,而不是双引号。

其次,转换不接受该形式的参数。请参阅this

我认为你想要的是:

convert(varchar(8), Followup.DateEntered, 112)