2013-12-17 139 views
1

我試圖執行以下查詢:使用CURRENT_TIMESTAMP導致INSERT語句插入語句

DECLARE @MyValue DATETIME 
SET @MyValue = CAST((SELECT CURRENT_TIMESTAMP) as DATETIME) 
INSERT INTO Person (Gender,Name, JoinDate) 
VALUES ('M','Alfred',@MyValue) 

但SQL Server不斷拋出以下錯誤:

Msg 241, Level 16, State 1, Procedure Insert_Current_Time, Line 8 Conversion failed when converting date and/or time from character string.

我已經嘗試過許多其他的東西,但他們似乎沒有解決它。有沒有解決方案?

+0

您可以顯示錶'Person'的模式嗎?如果'JoinDate'被指定爲'DateTime',它對我來說就可以正常工作。 – alroc

+0

這個[sqlfiddle](http://sqlfiddle.com/#!6/c841c/4)表明你沒有告訴我們我們需要知道的一切。 – pilcrow

回答

0

您可以將CURRENT_TIMESTAMP放入您的插入位置並放棄演員陣容嗎? 這個工作對我來說:

create table flar (thetime datetime); 
insert into flar values(CURRENT_TIMESTAMP); 
+0

不是。已經嘗試過了,同樣的錯誤(Msg 241,Level 16,State 1) – Mudkip

+0

我在運行後從字面上將它從sql server management studio窗口中複製過來。 SQL服務器版本10.50。目標列的數據類型是什麼? – Jay

+0

這是日期時間,就像你已經顯示 – Mudkip

1

只是這樣做:

INSERT INTO Person (Gender,Name, JoinDate) 
VALUES ('M','Alfred',getdate()) 

或本:

INSERT INTO Person (Gender,Name, JoinDate) 
VALUES ('M','Alfred',current_timestamp) 
0

JoinDate字符串/ varchar數據類型?如果是這樣,您需要將其轉換爲字符串,而不是嘗試將日期時間值存儲在字符串字段中。

查看結果:How to convert DateTime to VarChar

+0

JoinDate是一個日期時間類型 – Mudkip

+0

奇怪的是,我在VS 2012中遇到類似錯誤的唯一方法是混合數據類型。作爲一個DateTime列沒有問題,你可以添加你的表的DDL? – KingChicken

+0

DDL是什麼意思?問題出在SQL Server層中,而不是在Visual Studio應用程序中 – Mudkip