2013-06-13 54 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...