MS Access 2003データベースに保存されている日付を取得しようとしています..形式で保存されていますdd/mm/yyyy
が、取得すると次の形式になりますmm/dd/yyyy
MSAccessに日付を形式で返すように強制するにはどうすればよいですdd/mm/yyyy
か?
MS Access 2003データベースに保存されている日付を取得しようとしています..形式で保存されていますdd/mm/yyyy
が、取得すると次の形式になりますmm/dd/yyyy
MSAccessに日付を形式で返すように強制するにはどうすればよいですdd/mm/yyyy
か?
私はなんとかそれを解決することができました。
フィールドをdd/mm/yyyyにするためのフォーマットをフィールドに追加しました
私のC#アプリケーションでは、その形式の日付を処理するように調整しました/すべてが良好です
ロケールを指定できるExcelTEXT関数を使用できます。これは、MSAccessUDFのサンプルですformatLocale
。
Option Compare Database
Option Explicit
'see https://excel.tips.net/T003299_Specifying_a_Language_for_the_TEXT_Function.html
'for countries list
Dim xl As Excel.Application
Function formatLocale(dt As Variant, xlFormat As String) As Variant
setXl
formatLocale = xl.WorksheetFunction.Text(dt, xlFormat)
End Function
Sub test_formatLocale()
'print this month's name in US english
Debug.Print formatLocale(Now, "[$-409]mmmm")
End Sub
Function setXl()
On Error Resume Next
If xl Is Nothing Then
'try getting
Set xl = GetObject(, "Excel.Application")
End If
If xl Is Nothing Then
Set xl = CreateObject("Excel.Application")
End If
End Function
Accessでは、日付は常に日付/月の区別なしに内部的に保存されます。多くのデータベースや言語と同様に、これは実数です。
その数値がどのように変換されて日付として表示されるかは、完全にクライアントプログラムとそのローカルまたはシステムユーザー設定に依存します。
Access自体がそのクライアントプログラムである場合、日付は現在のユーザー設定形式で表示および編集されます。これは、現在のWindowsユーザーロケールに応じて推定されます。VBAを除く:VBAは英語(米国)で書かれた言語であるため、SQLだけでなくコードでの入力と比較の形式は常にmm / dd/yyyyです。
format関数を使用します。
Format(dateVar, "dd/mm/yyyy")
ここで、dateVarはDateTimeタイプであることが好ましい。
私の経験では。ある段階で何をしても、Microsoftソフトウェアは、asp、.net、sql、IE、またはOS自体など、ヨーロッパの日付について混乱します。主に、5月6日または6月5日になる可能性がある2012年6月5日など、あいまいな場合。ある段階でこれがうまくいかないことを保証します。
ロケールを設定すると、誤った安心感に陥ります。
したがって、風変わりな米国の日付形式mmddyyyyに固執するか、私たちと同じようにMicrosoftの日付形式を完全に忘れて、数値フィールドのyyyymmddhhmmssに基づいて独自の日付形式を作成します。時間と組み合わせて非常に効率的な時間比較を可能にするため、より柔軟で強力です。マイクロソフトの問題は、彼らが黙って物事を修正しようとすることです。私はこれがまったく役に立たないと思います。
ロケールがUSでない場合、MicrosoftAccessのデフォルト値として今日の日付を使用するときは十分に注意してください。(私のものは英国です)。
これは、急いでフィールドを短いテキストとして定義し、後でデフォルト値= Date $()を導入したときに発生した問題を克服しました。はい、それはずさんで、US mm / dd / yyyy形式を生成し、日付ピッカーを使用して修復する必要がありました。