3

ユーザーの選択をデータベース (SQL Server 2008) に渡す VB.NET フォームがあります。ユーザーが選択する値の 1 つは、日付ピッカー オブジェクトの日付です。この日付は、文字列としてデータベースに保存されます。
配置が異なると、データベースに挿入される日付形式が異なり、サーバーに設定されているデータ形式に依存していることに気付きました。

プロセスを複数のサーバー (異なるクライアント用) にインストールする必要があり、サーバーの日付形式を変更するオプションが必ずしもあるとは限らないため、これは私にとって大きな問題になる可能性があります。

データベースへの出力の日付形式をプログラムで定義する方法はありますか?

4

6 に答える 6

3

フィールド型を使用して日付と時刻の情報を SQL に保存する場合DateTime、SQL はそれらの値を保存するために使用する形式 (YYYY-MM-DD hh:mm:ss) に自動的に変換する必要があります。

一方、それらをテキスト (varchar など) として保存している場合は、日付と時刻を希望どおりに渡すようにコードを変更する必要があります。

おそらく次のようなものです:

Dim strDate as string = Date.Now.ToString("MM/dd/yyyy hh:mm:ss tt") 'Returns date with AM/PM'

Dim strDate as string = Date.Now.ToString("MM/dd/yyyy HHH:mm:ss") 'Returns date with military time'
于 2013-08-28T19:41:39.520 に答える
2

データベースの日付形式は、Management Studio またはその他のクライアント ツールで表示される方法では保存されません (ロケールまたはその他の設定により、地域の形式が適用される場合があります)。

日付/時刻の値をデータベースに保存する場合、データ型はDATEDATETIME、などであり、やSMALLDATETIMEのような文字列型ではありません。日付を文字列として保存すると、自動検証 (ジャンク防止)、日付/時刻の計算、効率的な日付範囲クエリなど、あらゆる種類の機能が失われます。または6月1日?そのような文字列をどのようにソートすると思いますか?VARCHARNVARCHAR01/06/2013

VB.NET フォームは日時パラメーターを渡す必要があり、形式はその一部であってはなりません。日付/時刻の値は、ユーザーに表示する必要がある場合を除き、決して文字列として扱われるべきではありません。その場合はプレゼンテーション層で または を使用する必要あります.Format().ToString()

絶対に文字列を渡す必要がある場合は、次の日時のように、完全に明確な形式であることを確認してください。

YYYYMMDD hh:mm:ss.nnn
YYYY-MM-DDThh:mm.ss.nnn

言語、日付形式、およびその他の設定によっては、他の形式が正しく解釈されない場合があります。ただし、文字列ではなく日付/時刻パラメーターとして日付/時刻値を渡す必要があるため、これについて心配する必要はありません。

于 2013-08-28T19:54:55.110 に答える
0

私が間違っている場合は修正してください。datetimepicker 定数の形式を設定する必要があります。

これがコードです。

Me.DateTimePicker1.Format = DateTimePickerFormat.Custom
Me.DateTimePicker1.CustomFormat = "dd/MM/yyyy"

時間と秒にも設定できます。

出力:

30/08/2013

データベースに保存したり、取得したりするのと常に同じ形式になります。

于 2013-08-30T06:14:55.470 に答える
-1

データベースの日付形式は、データベース構成で設定されます。

データをクエリする場合、次のように日付をフォーマットできます: http://msdn.microsoft.com/en-us/library/ms187928.aspx

また、これを調べてください:http://technet.microsoft.com/en-us/library/ms189491.aspx

于 2013-08-28T19:44:15.883 に答える