2

T1いくつかの日付/時刻フィールドを持つテーブルがあります。このテーブルに対するいくつかのクエリを UNION クエリと組み合わせ、T2次のようにユニオンで SELECT INTO を使用して新しいテーブルを作成しました。

SELECT * INTO T2
FROM (select * from query1_T1
union
select * from query2_T1)

問題はquery1_T1、日付フィールドの一部を空白の文字列定数に置き換えることで、T2 が日付/時刻フィールドではなくテキスト フィールドを持つことになります。説明する:

query1_T1:
select myUDF(someTextField),"" as newDateField from T1

query2_T1:
select anotherUDF(someTextField),oldDateField from T1

ここoldDateFieldで、日付/時刻です。

SELECT INTO または change を構造化してquery1_T1、クエリから同じ結果が得られますが、newDateField最終的に日付/時刻になる方法はありますか?

4

3 に答える 3

5

テーブルへのデータの追加とは別に、いつでもテーブルを作成できます。まず、適切なデータ型ですべてのフィールドを定義します。次に、 を使用INSERT INTO (columns) SELECT * FROMして入力します。

更新しました:

または、ハイブリッド アプローチを実行できます。最初に行をまったくSELECT INTO使用しないでください:

SELECT * INTO T2
FROM query2_T1
WHERE 1=0

これにより、ほとんどの構造が作成されます。その後、適切に処理されなかったデータ型を手動で調整できます。

構造が適切に調整されていれば、これを安全に行うことができます。

INSERT INTO T2 
SELECT * FROM query1_T1
UNION 
SELECT * FROM query2_T1
于 2013-05-02T18:09:25.967 に答える
1

Access では試していませんがcast()、他のほとんどすべてのデータベースで使用できます。Access の同等の関数はcdate(). 試す:

cdate(NULL) as newDateField

実際の値が必要な場合は、次のようになります。

cdate('1900-01-01')
于 2013-05-02T16:53:44.727 に答える