7

時間測定を処理して保存するのが最善の方法であるかを判断するのに問題があります。

ユーザーが hh:mm:ss または mm:ss 形式で時間を入力できるテキスト ボックスを持つアプリがあります。

そのため、この文字列を解析し、コロンでトークン化し、TimeSpan を作成する (または TimeSpan.Parse() を使用して、mm:ss ケースに「00:」を追加する) ことをビジネス ロジックに計画していました。Ok?

これをデータベースに保存するにはどうすればよいですか?フィールドタイプは何になりますか?DateTime が間違っているようです。00:54:12 の時刻を 1901-01-01 00:54:12 として保存したくありません。

4

8 に答える 8

9

TimeSpan には、代わりに格納できるInt64 Ticksプロパティと、Ticks 値を受け取るコンストラクターがあります。

于 2008-09-17T17:01:48.043 に答える
3

最も簡単なのは、ユーザー入力を整数の秒数に変換することだと思います。したがって、54:12 == 3252 秒なので、3252 をデータベースまたは任意の場所に保存します。その後、ユーザーに表示する必要がある場合は、再度変換することができます。

于 2008-09-17T16:59:47.940 に答える
3

1日未満の期間では、他の人が言ったように秒を使用してください.

長期間の場合は、db エンジンに依存します。バージョン 2008 より前の SQL Server の場合は、datetime が必要です。大丈夫です。デフォルトの 1900 年 1 月 1 日という日付は無視してかまいません。幸運にも SQL Server 2008 を使用している場合は、使用できる個別の Date および Time データ型があります。実際の日時型を使用する利点は、期間を比較するために DateDiff 関数を使用できることです。

于 2008-09-17T17:01:00.463 に答える
0

ほとんどのデータベースには、ある種の時間間隔タイプがあります。答えは、話しているデータベースによって異なります。Oracle の場合は、日数 (小数日を含む) を表す単なる浮動小数点 NUMBER です。それを任意の DATE 型との間で加算/減算することができ、正しい答えが得られます。

于 2008-09-17T17:01:19.573 に答える
0

int型でそれを行い、秒として保存し、前後に解析する必要があります

http://msdn.microsoft.com/en-us/library/ms187745.aspx

于 2008-09-17T17:02:44.953 に答える
0

整数の秒数 (または必要に応じてミリ秒) として

于 2008-09-17T17:01:25.860 に答える
0

開始時刻と終了時刻の両方を収集していますか? その場合、DBMS がサポートしていれば、「タイムスタンプ」データ型を使用できます。そうでない場合は、日付/時刻型として。ここで、日付部分を保存したくないと言いましたが、期間が深夜にまたがる場合を考えてみましょう。たとえば、23:55:01 に開始し、00:05:14 に終了します。日付も入っています。2 つの日時値の間の経過時間 (秒単位) を返す標準の組み込み関数があります。

于 2008-09-17T17:02:11.880 に答える
0

秒または分の整数を使用します。秒の方がいいかもしれません。あまりにも正確に何かを選択したことで自分をけなすことは決してありません。また、UI については、複数のテキスト入力を使用することを検討してください。ユーザーが実際に「:」を正しく入力することを心配する必要はありません。また、0 ~ 59 を含む分と秒の値など、他の制約を追加する方がはるかに簡単です。

于 2008-09-17T17:02:27.497 に答える