みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
環境 FM18 Win
スクリプト:レコードのインポートでオラクルからデータのインポートを行っています。
データソース指定:ODBC
■オラクル側
UPDATETIMEには(yyyy/mm/dd HH:MM:SS)のデータが格納されていることは確認出来ています。
■FM側
インポートを実行すると
UPDATETIME(yyyy/mm/dd)
となります。
FM側のフィールドタイプをタイムスタンプに変更したりしてインポートを行いましたが、
やはり(yyyy/mm/dd HH:MM:SS)でインポート出来ません。
何か解決する方法などあるのでしょうか?
ご教授下さい。
Offline
FM側のフィールドタイプを "テキスト" にして試してみるとか...
Offline
>FM側のフィールドタイプをタイムスタンプに変更したりして
変更する前は何だったんですか?日付なら時刻部分が入らないのは当然ですが
>やはり(yyyy/mm/dd HH:MM:SS)でインポート出来ません。
どうなるんですか?タイムスタンプならyyyy/mm/ddにはならないはずですが
テキストにインポートするとどうなりますか?
Oracle側のデータ型は何ですか?
計算フィールド・数字タイプで、
タイムスタンプを数字してみたらいかがでしょう。
タイムスタンプは
0001/01/01 00:00:01
を1としたシリアル値になっています。
ちなみに、
2022/11/14 00:00:01
は
63803980801
となります。
また、
フィールドの長さが足りないと日付だけの表示なったりしますね。
Offline
ありがとうございます。
再度、教えて頂いた事を全て行ってみました。
1.FM側のフィールドタイプを "テキスト" にして試してみました。
yyyy/mm/dd でした
2.Oracle側のデータ型は何ですか?
DATE型でした
3.タイムスタンプを数字にしてみました
2022/11/14 = 738473 でした。 日付のみの数値データでした。
ACCESSで開くと
yyyy/mm/dd HH:MM:SS で表示されていました。
ファイルメーカー側の仕様でしょうか?
Offline
Oracle側ではDATE型が時刻まで含むみたいですが、ODBCドライバではSQL_TIMESTAMPにするとなってるので、
https://docs.oracle.com/cd/B16351_01/do … p_odbc.htm
何でFMではインポート時に欠落するんでしょうね?
インポート時のSQL文に問題がある?
SQLデータソースにできるなら、それを試してみるとか?
いろいろGoogleなどで調べていたのですが、取込み時のSQL分がまずいような気がしています。
FMのSQLビルダー
SELECT
"VIEW_MEASUREVALUE"."ADMISSIONNO",
"VIEW_MEASUREVALUE"."CREATEDATETIME", ←DATE型
"VIEW_MEASUREVALUE"."CREATESTAFFID",
"VIEW_MEASUREVALUE"."CREATESTAFFNAME",
"VIEW_MEASUREVALUE"."DEPTCODE",
"VIEW_MEASUREVALUE"."DEPTNAME",
"VIEW_MEASUREVALUE"."EXECUTEDATETIME", ←DATE型
"VIEW_MEASUREVALUE"."EXECUTESTAFFID",
"VIEW_MEASUREVALUE"."EXECUTESTAFFNAME",
"VIEW_MEASUREVALUE"."INDICATIONNAME",
"VIEW_MEASUREVALUE"."INPUTTYPE",
"VIEW_MEASUREVALUE"."ISCANCEL",
"VIEW_MEASUREVALUE"."ISDELETE",
"VIEW_MEASUREVALUE"."ITEMCODE",
"VIEW_MEASUREVALUE"."ITEMTYPE",
"VIEW_MEASUREVALUE"."ITEMTYPENAME",
"VIEW_MEASUREVALUE"."LISTTYPECODE",
"VIEW_MEASUREVALUE"."PATIENTID",
"VIEW_MEASUREVALUE"."RESULT",
"VIEW_MEASUREVALUE"."UPDATEDATETIME", ←DATE型
"VIEW_MEASUREVALUE"."UPDATESTAFFID",
"VIEW_MEASUREVALUE"."UPDATESTAFFNAME"
FROM "VIEW_MEASUREVALUE"
TO_CHARを使ってインポートするという記事を見つけました。
具体的にどのように記述したらよいでしょうか?
Offline
#6に書いたリンク先はググってでてきた中の適当なのを読んだのですが、「10g Release 2 (10.2) for UNIX-Based Operating Systems」でした。
バージョンによる違いもありうる?さすがにそれはないか...
そのままSELECTしてるだけなので問題なさそうですが
型変換する例がありました。
CAST (created_time AS TIMESTAMP) AS created_timestamp
TO_CHARは
https://docs.oracle.com/cd/B12037_01/se … ons165.htm
ありがとうございます。
型変換する例がありました。
CAST (created_time AS TIMESTAMP) AS created_timestamp を参考にして
SELECT
"VIEW_MEASUREVALUE"."ADMISSIONNO",
・・・
・・・
・・・
"VIEW_MEASUREVALUE"."CAST (UPDATEDATETIME AS TIMESTAMP) AS UPDATEDATETIME_TIMESTAMP", ←変更箇所
FROM "VIEW_MEASUREVALUE"
をSQLビルダーに記入しましたが、SQLエラーとなります。
そもそもの自分の書き方が悪いように思っています。
どこがまずいでしょうか?
Offline
CAST ("VIEW_MEASUREVALUE"."UPDATEDATETIME" AS TIMESTAMP) AS "UPDATEDATETIME_TIMESTAMP",
じゃないでしょうか。
別名はあえて変えなくても元の名前と同じでも構わないでしょう。
特殊文字は使ってないので、""は全部不要でしょう。
しかし同じSQLでACCESSでは問題ないのですよね?
FMがODBCを通さずにデータ型を型名で判断しているぐらいとしか理由が推測できませんが、そんなことあるのかなあ??
そういえば、Oracleの環境はどういうものですか?Windowsバージョンですか?
himadanee様
SELECT
\"VIEW_MEASUREVALUE\".\"ADMISSIONNO\",
・・・
・・・
・・・
CAST (\"VIEW_MEASUREVALUE\".\"UPDATEDATETIME\" AS TIMESTAMP) AS \"UPDATEDATETIME_TIMESTAMP\", ←変更箇所
FROM \"VIEW_MEASUREVALUE\"
で、タイムスタンプ形式(yyyy/mm/dd HH:MM:SS)でデータインポート出来ました。
ありがとうございます。
また、オラクル環境は
Windows Oracle11gになります。
Offline
Pages: 1
[ Generated in 0.006 seconds, 9 queries executed - Memory usage: 526.55 KiB (Peak: 547.46 KiB) ]