2013-01-05 35 views
0

轉換功能,我寫了下面的SQL上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 1 6,狀態1,行1
無效的列名稱'yyyymmdd'。
消息243,級別16,狀態1,行1
類型Followup.dateentered不是定義的系統類型。

任何想法如何克服「轉換」功能

+0

你把現場/對象名稱在雙引號,字符串在單引號中SQLServer的。 「val」解釋爲列名稱,'val'作爲字符串值。 – a1ex07

+0

您需要使用SQL Server ** 2012 **,它具有[新的'FORMAT'函數](http://msdn.microsoft.com/zh-cn/library/hh213505.aspx)來執行此類日期格式設置。對於其他版本的SQL Server,請查看適當的[CONVERT'語法](http://msdn.microsoft.com/zh-cn/library/ms187928.aspx)以及如何獲取所需的格式 –

+1

當您正在做這樣的事情,記住msaccess在SQL方面是非常不規範的。 –

回答

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服務器字符串要使用+標誌,而不是在SQL Server中&

2

首先,字符串常量用單引號,不是雙引號分隔。

其次,convert不會以這種形式引用參數。見this

我想你想的是:

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