2012-06-21 45 views
0

我的C#程序从数据库中选择一个日期时间字段,返回的数据等以下几点:时间格式

21/06/2012 4:11:48 p.m. 

尽管这样不是以这种方式存储(它存储就像2012/06/21 15 :19:10:000)。 我的区域设置为英语/新西兰

但是当我尝试将其保存回到数据库

ISDATE() SQL函数不喜欢这种格式,只是返回NULL。我有任何选项来设置SQL或C#中的时间格式吗?什么在sql或c#使它把“下午”? (而不只是“PM”,它的方式运作)

总结问题

See latest related link

+1

你能告诉我们什么“当我试图将其保存回数据库”是什么意思?例如显示实际的代码? SQL Server可能期望m/d/y不是d/m/y。你为什么使用不安全和不明确的日期时间格式?你应该使用'yyyymmdd'作为日期部分。 –

+0

请参阅我在OP – Rod

回答

3

你不应该在数据库中的文字都可以保存它 - 你应该使用相关数据类型,例如DATETIME,并使用SQL参数将.NET中的DateTime值传递到数据库。如果您使用的是正确的数据类型,则根据“2012/06/21 15:19:10:000”完全不会将存储为。这可能是你如何在SQL Server Studio或类似的东西中看到它,但这并不意味着它是原始存储格式。

从逻辑上讲,日期/时间的格式不超过10的数字是“10”(十进制)与“A”(十六进制)。尽可能避免字符串转换,并且您的生活会更轻松。

+1

中的更新我无法强调足够重要的是,如果可以避免,请不要“串行输入”任何数据。 – CodeHxr

2

注意:请参阅Jon关于在数据库中正确保存DateTime而不是字符串的响应。

对于C#字符串格式化:

DateTime对象可以在使用的ToString()函数不同的格式输出。

请参见以下链接

因此,举例来说:

DateTime.Now.ToString("dd/MM/yyyy h:mm:ss"); 

将在你在你的问题的格式输出。

1

大多数SQL日期时间格式应该可以通过C#DateTime.Parse(youSQLDatetimeVariable)识别。我觉得你的情况有点奇怪。

像其他说你真的不应该,但这里是你如何日期时间转换为各种格式:

SELECT Convert(VARCHAR, MyDateTimeField, 112) from MyTable 

这个数字(112)表示将显示为varchar 所有格式可以是DateTime格式这里发现的细节: http://anubhavg.wordpress.com/2009/06/11/how-to-format-datetime-date-in-sql-server-2005/

或者C#代码内与

YourDatetimeVariable.ToString("MM-dd-yyyy") 

或者其他任何格式的MM-月份数,dd - 天数,yyyy - 年。