0

我正在使用 SQL Server 2008,并且我有一个数据库文件 (mydata.mdf),其中一个表中有一个列,并且该列具有数据类型 (Time) 。

我将此数据库文件添加到我的 WPF-C# 项目中(使用 VS2010),但我遇到了一个问题,如下所示:

此 (Time) 列处理 24-Hour system 中的时间,但我想在我的应用程序中使用 (12-Hour) system ,所以有没有办法在 SQL server2008 中定义 12-Hour 系统时间。

如果没有,您认为最好的处理方法是什么???

Pleeeeeeeeeeeeease 尽快帮助我,因为我很着急,我想不通...

4

3 回答 3

2

数据库中的时间未“格式化”。它以某种内部格式(您可以通过 Google 搜索但不应该关心)表示,允许它以支持的精度级别表示一天中的每一刻。

这些值仅在您的应用程序将它们转换为字符串以向用户显示它们时才被格式化,并且您可以完全控制它。

因此,如果您已将时间读入 CLR DateTime 类的实例,则可以使用 value.ToString("h:mm:ss tt") 显示为 12 小时制时间(省略日期)。此处列出了自定义格式选项。

于 2010-11-23T14:22:55.697 回答
1

答案是你真的不能,但别担心,这不是问题。在 C# 代码中格式化日期。

关键是日期和时间是一个绝对值,这是您希望 SQL 存储的,那么 12 小时与 24 小时制只是一个显示细节,例如,13:00 和 1:00pm 是等价的,不要担心 SQL 如何存储它,然后在 C# 中使用以下内容显示它:

DateTime myDateTime = GetTheTimeFromSomeMethod();
myDateTime.ToString("h:mm:ss tt");

有很多指南,这是一个很好的指南,但是还有很多其他指南,例如这个

于 2010-11-23T14:27:38.227 回答
0

它必须从数据库中格式化吗?C# 和 WPF 都提供了许多内置的日期格式选项。例如,签出ContentStringFormat标签上的属性。

如果您必须在数据库中执行此操作,这里有一个混乱的解决方法,它会起作用

它使用 12 小时时钟将日期格式化为字符串,然后删除其中的日期部分

select right(convert(varchar, cast('1/1/2010 23:59:59' as datetime), 100), 
charindex(' ', reverse(convert(varchar, cast('1/1/2010 23:59:59' as datetime), 100)))-1)
于 2010-11-23T14:28:34.920 回答