2013-06-13 93 views
-1

我有串date="20130613070000+1000"我轉換爲DATATIME使用:如何改變日期格式在SQL Server或C#在SQL Server如何真正插入日期時間

date_dt = DateTime.ParseExact(date, "yyyyMMddHHmmsszzz", null, DateTimeStyles.None); 

導致其date_dt=13/06/2013 12:00:00 AM

我插入到數據庫的SQL使用服務器

insert into date (startdate) VALUES ('13/06/2013 12:00:00 PM') 

我有一個問題 - 我得到一個錯誤:

Msg 242, Level 16, State 3, Line 6
The conversion of a varchar data type to a datetime data type resulted in an out-of-range value.

什麼爲dt_date的水溶液轉化與fomat MM/dd/yyy

+4

*不*在代碼中的sql語句字符串中插入值! *請*使用[SqlParameter](http://msdn.microsoft.com/library/system.data.sqlclient.sqlparameter.aspx)。 – Corak

+0

http://stackoverflow.com/questions/1032495/insert-datetime-value-in-sql-database-with-c-sharp – Zaki

+3

'cmd.CommandText = 「插入到日期(開始日期)的值(@startDate)」; cmd.Parameters.AddWithValue(「startDate」,date_dt);' - ***工作完成*** –

回答

1

你如何在數據庫中插入?從C#代碼你應該總是使用參數傳遞值。該框架爲您做了轉換!

更多信息:http://msdn.microsoft.com/en-us/library/ms254953.aspx

http://msdn.microsoft.com/en-us/library/4f844fc7.aspx

+1

沒有downvote,但我認爲這不能回答這個問題。即使在你編輯之後。 –

+3

@SonerGönül恰恰相反,我認爲這是**這個問題的答案。如果你發現自己不知道如何解析或格式化日期(或者其他類型),那麼這意味着你做錯了*。在這裏要做的**正確的**是將其表示爲參數,而不是立即的 –

+1

@SonerGönül問題是(也)「如何通過c#插入datetime」毫無疑問,標準方式是通過SqlParameters 。 – Sklivvz

1

插入日期作爲字符串時,您可以使用ISO 8601格式。這應該在所有的文化工作:

date_dt.ToString("s") 

輸出示例:

2013-06-13T10:29:57 

或者,您可以使用SqlCommand帶參數,這將做轉換爲你。

+0

不是我需要通過datetime類型插入ino sql,但我需要等於在asp.net或c中的sql和datetime格式的日期時間格式# – samer

+0

我不知道如果我明白你的意思。SQL服務器的輸出是一個DateTime實例。如果你的服務器上的日期值也是一個DateTime實例,比較它們應該很容易?如果您支持多個時區,則可能必須將其轉換爲UTC。 – EventHorizon

-1

如果你投入的SQL查詢,那麼你可以使用以下:

select CONVERT(VARCHAR(10),getdate(),101) 

我希望這會幫助你。 :)

+0

有一個錯誤:getdate? – Sklivvz

+0

那是什麼.. ?? –

+0

getdate()返回當前日期。他正在嘗試插入其他數據。 – Sklivvz

0

你可以用下面的轉換功能,以您的日期字符串

DECLARE @MyDate DATETIME 
SET @MyDate = CONVERT(DATETIME, '13/06/2013 12:00:00 PM', 103) 
INSERT INTO date (startdate) VALUES (@MyDate) 

非常有用的鏈接轉換爲SQL日期時間格式書籤可以在這裏找到與此有關。 http://anubhavg.wordpress.com/2009/06/11/how-to-format-datetime-date-in-sql-server-2005/

+1

由於該值來自調用代碼(並且在某些靜態sql中不是固定值),所以IMO首先對該值進行參數化,而不是將其連接到文字中仍然會好得多。參數是強類型的 - 不需要可能不明確的格式/解析步驟。它也允許更好的查詢計劃重用。 –

0
You can insert into database SQL Server using 

insert into date (startdate) VALUES ('06/13/2013 12:00:00 PM') 

the format for datetime is mm/dd/yy...