我的C#程序从数据库中选择一个日期时间字段,返回的数据等以下几点:时间格式
21/06/2012 4:11:48 p.m.
尽管这样不是以这种方式存储(它存储就像2012/06/21 15 :19:10:000)。 我的区域设置为英语/新西兰
但是当我尝试将其保存回到数据库
的ISDATE()
SQL函数不喜欢这种格式,只是返回NULL。我有任何选项来设置SQL或C#中的时间格式吗?什么在sql或c#使它把“下午”? (而不只是“PM”,它的方式运作)
总结问题
我的C#程序从数据库中选择一个日期时间字段,返回的数据等以下几点:时间格式
21/06/2012 4:11:48 p.m.
尽管这样不是以这种方式存储(它存储就像2012/06/21 15 :19:10:000)。 我的区域设置为英语/新西兰
但是当我尝试将其保存回到数据库
的ISDATE()
SQL函数不喜欢这种格式,只是返回NULL。我有任何选项来设置SQL或C#中的时间格式吗?什么在sql或c#使它把“下午”? (而不只是“PM”,它的方式运作)
总结问题
你不应该在数据库中的文字都可以保存它 - 你应该使用相关数据类型,例如DATETIME
,并使用SQL参数将.NET中的DateTime
值传递到数据库。如果您使用的是正确的数据类型,则根据“2012/06/21 15:19:10:000”完全不会将存储为。这可能是你如何在SQL Server Studio或类似的东西中看到它,但这并不意味着它是原始存储格式。
从逻辑上讲,日期/时间的格式不超过10的数字是“10”(十进制)与“A”(十六进制)。尽可能避免字符串转换,并且您的生活会更轻松。
中的更新我无法强调足够重要的是,如果可以避免,请不要“串行输入”任何数据。 – CodeHxr
我认为你的问题与sql中的Set语言设置有关。
这个问题类似:SQL Server ISDATE() Function - Can someone explain this?
你可以尝试设置你的SQL语言来匹配您的格式?
注意:请参阅Jon关于在数据库中正确保存DateTime而不是字符串的响应。
对于C#字符串格式化:
DateTime对象可以在使用的ToString()函数不同的格式输出。
请参见以下链接
因此,举例来说:
DateTime.Now.ToString("dd/MM/yyyy h:mm:ss");
将在你在你的问题的格式输出。
大多数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 - 年。
你能告诉我们什么“当我试图将其保存回数据库”是什么意思?例如显示实际的代码? SQL Server可能期望m/d/y不是d/m/y。你为什么使用不安全和不明确的日期时间格式?你应该使用'yyyymmdd'作为日期部分。 –
请参阅我在OP – Rod