2012-06-18 53 views
5

我想只使用SQL或SSIS 以下面的SQL查詢作爲例子來DATETIME2轉換爲datetime,以創造不同來源之間的標準:怎麼投DATETIME2爲DATETIME

我得到出現以下錯誤: '不允許將數據類型datetime2顯式轉換爲時間戳。'

此外,我確實設法使用簡單的轉換將datetime2轉換爲日期。

什麼是使用SQL Server 2008或SSIS將datetime2轉換爲datetime的正確方法?

gilibi

+0

你讀過http://stackoverflow.com/questions/1331779/c-sharp-conversion-of-a-datetime2 -data型至A-日期時間數據類型? –

+0

我有,但我無法在案例中使用C# – gilibi

+0

您已編輯查詢,但顯然錯誤消息不再正確 - 您是否仍然有*錯誤? –

回答

0

好的,我設法使用SSIS數據轉換組件來完成該操作。 我發現我可以使用DT_DBTIME2或DT_DBTIME

感謝大家誰幫助

2

你的樣品SELECT語句嘗試投放offer_start_date爲timestamp不是日期時間。

如果您確實需要datetime2列中的時間戳值,則可以使用DatePart函數來檢索日期的某些部分並自行構建它。

例如:

declare @date datetime2 
set @date = GETUTCDATE() 

select @date, 
     DATEPART(hour, @date), 
     DATEPART(minute, @date), 
     DATEPART(second, @date) 

MSDN參照DatePart功能。

不知道爲什麼你會得到這個錯誤,我沒有同樣的問題。以下示例在我的2008 Management Studio中正常工作。

create table #temp 
(
    OrderId int, 
    OrderDate datetime2 
) 

insert into #temp 
(OrderId, OrderDate) 
values 
(1, GetUTCDate()) 

select *, CAST(OrderDate as datetime) 
from #temp 

drop table #temp 
+0

+1有關臭名昭着的時間戳數據類型的更多信息,請參見MSDN](http://msdn.microsoft.com/zh-cn/library/ms182776(v = sql.90).aspx) – Andomar

+0

@Andomar我剛剛更新我的帖子包括鏈接 – Mike

+0

對不起,我複製了錯誤的例子。我嘗試過: SELECT CAST(offer_start_date AS datetime)FROM [ODS]。[macaclient_offers] – gilibi

5

您鑄造timestamp在你的代碼。更改爲datetime

SELECT CAST(offer_start_date AS datetime) FROM [ODS].[macaclient_offers] 
+0

我複製了錯誤的查詢。它應該與你建議的一樣,但這不起作用 – gilibi

+0

奇怪。在我的測試中它工作得很好。 [看看這裏](http://sqlfiddle.com/#!3/e34ce/2)。 –

+0

當你執行上面的查詢時,你會得到什麼錯誤?你問題中的錯誤信息是指'時間戳記'。 –

相關問題