初心者のFileMaker pro Q&A (旧掲示板)

みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。

1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)

You are not logged in.

Announcement

新しい掲示板は、こちら:https://fm-aid.com/forum/t/filemaker


#1 2022-11-13 12:54:18

hijiri
Member

ODBCインポート時のタイムスタンプについて

環境 FM18 Win

スクリプト:レコードのインポートでオラクルからデータのインポートを行っています。
データソース指定:ODBC

■オラクル側
UPDATETIMEには(yyyy/mm/dd HH:MM:SS)のデータが格納されていることは確認出来ています。

■FM側
インポートを実行すると
UPDATETIME(yyyy/mm/dd)
となります。
FM側のフィールドタイプをタイムスタンプに変更したりしてインポートを行いましたが、
やはり(yyyy/mm/dd HH:MM:SS)でインポート出来ません。

何か解決する方法などあるのでしょうか?
ご教授下さい。

Offline

#2 2022-11-14 11:31:48

qb_dp
Member

Re: ODBCインポート時のタイムスタンプについて

FM側のフィールドタイプを "テキスト" にして試してみるとか...

Offline

#3 2022-11-14 11:40:46

himadanee
Guest

Re: ODBCインポート時のタイムスタンプについて

>FM側のフィールドタイプをタイムスタンプに変更したりして
変更する前は何だったんですか?日付なら時刻部分が入らないのは当然ですが

>やはり(yyyy/mm/dd HH:MM:SS)でインポート出来ません。
どうなるんですか?タイムスタンプならyyyy/mm/ddにはならないはずですが

テキストにインポートするとどうなりますか?

Oracle側のデータ型は何ですか?

#4 2022-11-14 11:47:08

チポ
Member

Re: ODBCインポート時のタイムスタンプについて

計算フィールド・数字タイプで、
タイムスタンプを数字してみたらいかがでしょう。

タイムスタンプは
0001/01/01 00:00:01
を1としたシリアル値になっています。
ちなみに、
2022/11/14 00:00:01

63803980801
となります。


また、
フィールドの長さが足りないと日付だけの表示なったりしますね。

Offline

#5 2022-11-14 12:20:25

hijiri
Member

Re: ODBCインポート時のタイムスタンプについて

ありがとうございます。

再度、教えて頂いた事を全て行ってみました。
1.FM側のフィールドタイプを "テキスト" にして試してみました。
yyyy/mm/dd でした

2.Oracle側のデータ型は何ですか?
DATE型でした

3.タイムスタンプを数字にしてみました
2022/11/14 = 738473 でした。 日付のみの数値データでした。

ACCESSで開くと
yyyy/mm/dd HH:MM:SS で表示されていました。
ファイルメーカー側の仕様でしょうか?

Offline

#6 2022-11-14 12:51:59

himadanee
Guest

Re: ODBCインポート時のタイムスタンプについて

Oracle側ではDATE型が時刻まで含むみたいですが、ODBCドライバではSQL_TIMESTAMPにするとなってるので、
https://docs.oracle.com/cd/B16351_01/do … p_odbc.htm
何でFMではインポート時に欠落するんでしょうね?
インポート時のSQL文に問題がある?

SQLデータソースにできるなら、それを試してみるとか?

#7 2022-11-14 12:53:52

hijiri
Member

Re: ODBCインポート時のタイムスタンプについて

いろいろ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

#8 2022-11-14 12:54:57

himadanee
Guest

Re: ODBCインポート時のタイムスタンプについて

#6に書いたリンク先はググってでてきた中の適当なのを読んだのですが、「10g Release 2 (10.2) for UNIX-Based Operating Systems」でした。
バージョンによる違いもありうる?さすがにそれはないか...

#9 2022-11-14 15:17:50

himadanee
Guest

Re: ODBCインポート時のタイムスタンプについて

そのままSELECTしてるだけなので問題なさそうですが

型変換する例がありました。
CAST (created_time AS TIMESTAMP)    AS created_timestamp

TO_CHARは
https://docs.oracle.com/cd/B12037_01/se … ons165.htm

#10 2022-11-15 00:05:35

hijiri
Member

Re: ODBCインポート時のタイムスタンプについて

ありがとうございます。

型変換する例がありました。
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

#11 2022-11-15 07:09:28

himadanee
Guest

Re: ODBCインポート時のタイムスタンプについて

CAST ("VIEW_MEASUREVALUE"."UPDATEDATETIME" AS TIMESTAMP) AS "UPDATEDATETIME_TIMESTAMP",

じゃないでしょうか。
別名はあえて変えなくても元の名前と同じでも構わないでしょう。
特殊文字は使ってないので、""は全部不要でしょう。

しかし同じSQLでACCESSでは問題ないのですよね?
FMがODBCを通さずにデータ型を型名で判断しているぐらいとしか理由が推測できませんが、そんなことあるのかなあ??

そういえば、Oracleの環境はどういうものですか?Windowsバージョンですか?

#12 2022-11-15 09:19:34

hijiri
Member

Re: ODBCインポート時のタイムスタンプについて

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

Registered users online in this topic: 0, guests: 1
[Bot] ClaudeBot

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.006 seconds, 9 queries executed - Memory usage: 526.75 KiB (Peak: 547.66 KiB) ]