0

SQL Server 2008 を使用しており、データベース ファイル (mydata.mdf) があり、テーブルの 1 つに列があり、その列にはデータ型 (Time) があります。

このデータベース ファイルを WPF-C# プロジェクト (VS2010 を使用) に追加しましたが、次のような問題がありました。

この (時間) 列は 24 時間制で時間を扱いますが、アプリケーションで (12 時間) システムを使用したいので、SQL server2008 で 12 時間制の時間を定義する方法はありますか。

ない場合、それを処理する最善の方法は何だと思いますか???

急いでいてわからないので、できるだけ早く助けてください...

4

3 に答える 3

2

データベースの時間は「フォーマット」されていません。これは、サポートされている精度レベルで 1 日の各瞬間を表すことができる内部形式 (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 に答える