• 締切済み

サーバから取得したdatetime型の変換

いつもお世話になります。 初めて質問させていただきます。 初心者のため、不足の部分あるかと思いますが どうぞよろしくお願いいたします。 SQLServer2000サーバからSQLによるデータ取得を行いファイルに出力し、 そのファイルの内容を違うサーバに送るという課題があります。 そのうちサーバからデータを取得してファイルに出力するまでが 現在の私の担当部分になります。 その取得するデータの中にdatetime型の項目が存在しています。 これをファイル出力するためにchar型に変換を行いたいのですが、 良い方法が思いつきません。 time_t型からtm型に変換してそこからchar型に変換することを考えたのですが、 取得してきた項目自体をtime_t型に変換する根本の方法が わかりません。 取得してきた項目はlong型の値になっているようですので long型からtime_t型への変換ができれば localtime関数を使用してtm型に変換できるのですが。 上記のような方法が無いのでしょうか。 また皆様の中で過去にdatetime型の項目取得を行った経験をお持ちの型が いらっしゃいましたら参考にお話いただけませんでしょうか。 上記で何か不足部分ございましたらご指摘ください。 よろしくお願いいたします。

みんなの回答

回答No.1

ざっと調べてみた範囲では…… ・SQL サーバーの datetime 型  2つの4バイト整数で表現される。  最初の4バイトは、日付の連番であり、0 のとき、1900/1/1  次の4バイトは、1日のうちの時刻を、1/300秒 単位でカウントしたもの ・Cの time_t 型  1970/1/1 00:00:00 からの通算秒数 ということのようですから、これから変換できそうです。 あと、SQL の方の関数で、YYYY-MM-DD の形で取得できるようです。 ※私は関わったことがないので、詳細はわかりません。

namake13
質問者

お礼

御回答いただきありがとうございました。 取得したデータをDBTIMESTAMP型のポインタで取得を行い、 年、月、日、時間・・・といったプロパティをchar型に編集しなおして取得することで解決をしました。 この方法を使用しないとミリ秒まで取得できなかったですね。 ちなみにfractionは1億桁あるので100万で割って算出しました。 ------------------------------------------------ dbTimeStamp.year dbTimeStamp.month dbTimeStamp.day dbTimeStamp.hour dbTimeStamp.minute dbTimeStamp.second dbTimeStamp.fraction ------------------------------------------------

関連するQ&A