2

データをエクスポートする前に、次の式を使用して msaccess クエリで日付をフォーマットしています

Expr1: Right$([order details]![requested delivery date],4)+Mid$([order details]![requested delivery date],4,2)+Mid$([order details]![requested delivery date],1,2)

これは、テーブルの注文の詳細から一般的な日付を取得し (例: 2012 年 11 月 9 日)、それを 20120911 に変換するか、少なくともそれが私がやりたいことです。

残念ながら、私は20129/11として出力を取得しています。これは使用できない破損です

09 が魔法のように 9/ に変更されていることがわかりますが、その方法と理由はわかりません

誰かが正しい式がどうあるべきか、または基になるデータテーブルに変更が必要かどうかをアドバイスできますか.

テーブルで一般的な日付形式を使用しています - この式は以前は正常に機能していましたが、データベースを分割して添付テーブルを使用してから問題が発生し始めました - msaccess のバージョンは 2003 です

アドバイスをいただければ幸いです

ありがとう

4

3 に答える 3

1

フィールドのデータ型が日付/時刻の場合は、式を使用して日付を希望どおりにフォーマットする [order details]方が簡単です。Format()

Format([order details], "yyyymmdd")
于 2012-10-19T02:34:39.397 に答える
1

Format 関数を使用してみてください。

Expr1: Format ([order details]![requested delivery date], "yyyymmdd")

元の質問のコードの場合、「魔法」はありません。「9」で始まる2文字が「9/」であることだけです。

これは、フィールド タイプが DATETIME であることを前提としています。そうでない場合は、そのように変更する必要があります。

于 2012-10-19T02:35:50.197 に答える
1

文字列から日付を操作するのは非常に悪い考えです。

1 つは、「2012 年 1 月 1 日」や「2012 年 10 月 10 日」など、月の位置の変動に対処する必要があることです。
次に、Access によって返される文字列が列に指定された形式に大きく依存し、その形式がクライアントの地域設定に応じて変化するという事実に対処する必要があります。
さらに、Access は日付を理解し、US 形式で返す場合があります: m/d/yyyy.

問題を解決するには、SQL と Access が提供する日付と書式設定関数を明示的に使用して、日付を操作します。
あなたの場合、関数が必要なだけだと思いますFormat()

Format([order details]![requested delivery date], "yyyymmdd")

201209112012 年 9 月 11 日であれば返されます[requested delivery date]。your[requested delivery date]が代わりに文字列として定義されている場合は、有効な日付が含まれていることを確認し、次を使用して適切な日付に変換しますCDate()

Format(CDate([order details]![requested delivery date]), "yyyymmdd")

この列が Null 値を許可するように設定されている場合は、次のことをテストする必要があります。

Iif(IsNull([order details]![requested delivery date]), Null, Format(CDate([order details]![requested delivery date]), "yyyymmdd"))

日付操作の詳細については、次の記事をご覧ください。

于 2012-10-19T02:36:09.417 に答える