2012-04-12 18 views
2

私はAccess 2010をSQL Server 2008のデータベースのフロントエンドとして使用しています。日付フィールドはnvarchar(50)として格納されています。テキストフィールドDateHr 12/04/11 16:49:23には、April 11, 2012 4:49 PM(レコードが作成された日時と同じ)に変換する必要があります。日付の操作テキストフィールド

フィールドのデータ型をDateTimeに変更することはできません。これは日付をさらに混乱させるためです(Ex. 12/4/2011 4:49:23 PM)。レコードの入力方法を変更することはできません。

"mm/dd/yy"の形式でこのフィールドを表示し、この形式でwhere句を実行できるようにする必要があります。

私はそれが正しく表示されますがdtDateが11/12/04を表示している場合だけで参照するには、以下を試してみました:

Select (Format(CDate([DateHr]),"yy/mm/dd")) as dtDate

答えて

1

4桁に日付テキストの年コンポーネントを展開するSQL Serverのビューを作成します。その後、Access側からSELECT CDate([DateHr]) AS dtDate FROM YourViewが動作するはずです。しかし、実際に日付のテキストを実際の日付の型にキャストするのはまだ良いかもしれません...そして、CDate()を必要とせずにAccessから直接使用することができます。

+0

SQL Server側で新しい計算列を作成し、それをより読みやすい形式で使用できますか? – Rick

+0

テーブルの計算列に?私はそれをしていない。あなたはビューでそれを行うことができます。 – HansUp

+0

少し編集されましたが、機能しました。 'Format(CDate(" 20 "&[DateHr])、" mm/dd/yyyy "))' – Rick

2

あなたがアクセスでの変換を実行する必要があるなら、あなたはこれらのいずれかを試すことができます。

Select Mid([DateHr],4,2) & "/" & Mid([DateHr],1,2) & "/" & Mid([DateHr],7,2) as dtDate 

この私があなたに、文字列の形式で日付を与えるだろうと思い、そうでない場合は、あなたが取得するために、次の試みることができます有効な日付形式:

Select Format(DateSerial(Mid([DateHr],7,2),Mid([DateHr],4,2),Mid([DateHr],1,2)),"MM/DD/YYYY") as dtDate 
+0

日付の範囲を問い合せることはできますか? – Rick

+0

@Rickはい、私はwhere句で指定した2番目の "Format"の例を使用して、#Date1#と#Date2#の間の標準を使用することができます –

関連する問題