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”?(而不仅仅是“PM”,顺便说一句)

总结问题

查看最新的相关链接

4

4 回答 4

3

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

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

于 2012-06-21T16:42:56.207 回答
2

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

对于 C# 字符串格式:

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

请查看以下链接

因此,例如:

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

这将以您在问题中的格式输出。

于 2012-06-21T16:50:33.373 回答
1

我认为您的问题与 sql 中的 Set language 设置有关。

类似于这个问题:SQL Server ISDATE() 函数 - 有人可以解释一下吗?

您可以尝试设置您的 sql 语言以匹配您的格式吗?

于 2012-06-21T16:44:37.913 回答
1

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

就像其他人说的那样,您确实不应该这样做,但这里是如何将 DateTime 转换为各种格式的方法:

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 - 年。

于 2012-06-21T16:52:06.173 回答