SQL7のdatetime型とはどんな型でしょうか? – プログラミング – Home

SQL7のdatetime型とはどんな...
 
通知
すべてクリア

[解決済] SQL7のdatetime型とはどんな型でしょうか?


kai
 kai
(@kai)
ゲスト
結合: 23年前
投稿: 64
Topic starter  

お世話になっています。
Win2000,VC6,MFC,SDIの環境です。
データーベースは ODBC MS SQL7 を使っています。

SQL7のエンタープライズマネージャーでテーブルに項目を追加すると
データ型のコンボボックスに datetime型 長さ8 という項目が出てきます。
この型を選択し
VC6でレコードセットの派生クラスをつくると、この型には
CTimeクラスが割り当てられていました。

この datetime型 とはどんな型(フォーマット)なのでしょうか?
BooksOnlineでも調べられませんでした。

VCとは直接関係ない質問かもしれませんが、ご存知のかたご教授ねがいます。m(__)m


引用未解決
トピックタグ
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 23年前
投稿: 1301
 

> この datetime型 とはどんな型(フォーマット)なのでしょうか?

データベース内部にどんなカタチで格納されているかが知りたいのですか?
それを知ってどうするのですか?
推測するに8-byte整数です。たとえば1900年1月1日からの通算秒数とか。


返信引用
kai
 kai
(@kai)
ゲスト
結合: 23年前
投稿: 64
Topic starter  

επιστημηさん レスありがとうございます。

>データベース内部にどんなカタチで格納されているかが知りたいのですか?

はい、そうです。

>それを知ってどうするのですか?

テーブルにプログラムから書き込みをしたいのです。

「○丸年からの正の整数」ということでしょうか?

○丸年は何年なのでしょうか?
1ステップは何を示すのでしょうか?秒ですか?

ご存知のかた、ご教授よろしくお願いします。


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 23年前
投稿: 1301
 

> テーブルにプログラムから書き込みをしたいのです。

打ち込むSQL-statementにたとえば { ts '1998-09-24 10:02:20' }
とか書けばいいんじゃないかと。
# 外したかしら?


返信引用
kai
 kai
(@kai)
ゲスト
結合: 23年前
投稿: 64
Topic starter  

επιστημηさん レスありがとうございます。

>打ち込むSQL-statementにたとえば { ts '1998-09-24 10:02:20' }

文字列を書けば良いと言うことですか?


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 23年前
投稿: 1301
 

> 文字列を書けば良いと言うことですか?

SQL-statementを直接食わすAPIがあるなら、たとえば
INSERT INTO table VALUES( { ts '1998-09-24 10:02:20' }
みたいに。

# CTime型を直接マップできるのかもしれない。
# MFCのDB関連クラスは使ったことないので自信ないです。
# ふぉろーよろしく > だれぞ


返信引用
たいちう
 たいちう
(@たいちう)
ゲスト
結合: 23年前
投稿: 662
 

はずしてるかもしれません。
必要ならバックアップを取ってから試して下さい。

MFCのウィザードでは、CTime型が自動作成されますが、
CRecordSetから派生させたクラスCHogeRecordSetのメンバ変数を
COleDateTimeに変更してみて下さい。
それと、コンストラクタでm_hogeDate = 0;としているところを
コメントアウトして下さい。

当方も理解が曖昧なので、うまく説明できませんが。

「参考文献」

「3週間完全マスター Visial C++ 6.0」日経BP社
 の14日目


返信引用
kai
 kai
(@kai)
ゲスト
結合: 23年前
投稿: 64
Topic starter  

たいちうさん レスありがとうございます。

>MFCのウィザードでは、CTime型が自動作成されますが、
>CRecordSetから派生させたクラスCHogeRecordSetのメンバ変数を
>COleDateTimeに変更してみて下さい。
>それと、コンストラクタでm_hogeDate = 0;としているところを
>コメントアウトして下さい。

やってみたいのですが、

DoFieldExchange()という関数はどうすれば呼ばれるのでしょうか?
まさか、 UpdateData()ですか?
そうすれば insert into なとのSQL文を投げなくてもデータベースに
書き込みができるのでしょうか?

トンチンカンなことをいっていたらゴメンナサイ。
よろしくお願いします。


返信引用
たいちう
 たいちう
(@たいちう)
ゲスト
結合: 23年前
投稿: 662
 

> DoFieldExchange()という関数はどうすれば呼ばれるのでしょうか?

CRecordset::Update()で呼ばれませんか?


返信引用
wood
 wood
(@wood)
ゲスト
結合: 23年前
投稿: 895
 

>そうすれば insert into なとのSQL文を投げなくてもデータベースに
>書き込みができるのでしょうか?

環境、Win XP MS SQL Server7.0 (DE)(SP4)
ODBC接続(CDatabaseクラス、CRecordSetクラス)だけでアプリ作ってます?
CRecordViewクラスも使っていたっけかな

insert、DELETE、selectなどのSQL文は使用していません
Executeは使ってませんよ(カプセル化はされていると思うけど)

AppwizardでODBC接続SDIアプリ生成してみて下さい
DoFieldExchange()やRFX、DDX、DDVなど作成されます

テーブル項目の部分UPDATEはまだやってみたこと無いです

データベースサポートなしのアプリへ
クラスウィザードで後づけでデータベースサポートさせるとヘッダの
インクルードが追加されない等のバグはありますけど

話はずれてましたけど、
「datetime」は「OLAP」などで利用されているの見かけますよ
今のところ必要ないので「OLAP」はインストールしていません

但し「kai さん」の使用しているクラスが「CDAOxxxx クラス」
JETエンジン経由ODBC接続になるんでしょ
なので
多少機能的に私の環境と違うため確実回答とはいえてません


返信引用
kai
 kai
(@kai)
ゲスト
結合: 23年前
投稿: 64
Topic starter  

たいちうさん レスありがとうございます。

>CRecordset::Update()で呼ばれませんか?

そういうことでしたか。

woodさん レスありがとうございます。

>insert、DELETE、selectなどのSQL文は使用していません
>Executeは使ってませんよ(カプセル化はされていると思うけど)

レコードに書き込みたい場合などに
レコードセットの派生クラスをつくれば、SQL文を投げる必要はない
ということでしょうか?

>但し「kai さん」の使用しているクラスが「CDAOxxxx クラス」
>JETエンジン経由ODBC接続になるんでしょ

JETではないようです。SQL7でデータベースを作成しています。
JET==.MDB ですよね? 今は .MDF を使っています。

余談なのですが
クラスの新規作成で、基本クラスをCDaoRecordsetをえらんでも
基本クラスは CRecordset になってしまうようですね。バグでしょうか。
ですから、今は CDaoRecordset の派生ではなく CRecordset の派生を
つかっています。


返信引用
wood
 wood
(@wood)
ゲスト
結合: 23年前
投稿: 895
 

>JETではないようです。SQL7でデータベースを作成しています。
>JET==.MDB ですよね? 今は .MDF を使っています。
アクセスするエンジン(JET35.DLLやDAO30.DLL)
の話で物理ファイルの話ではありません
ODBC接続の場合、DAOでオラクルもアクセスできるよ

おおざっぱには
>レコードセットの派生クラスをつくれば、SQL文を投げる必要はない
>ということでしょうか?
だと思いますけど細かい操作したいときはやはり、SQL文を投げる必要
が出てくるんじゃないかな?

いまは、自分に必要ないから使ってませんけど

datetimeは解決したんですか、話の内容私が変えたみたいですけど
解決したんだったら「済」にして下さい
ほんで、別のスレッド上げたほうが良いと思いますけど


返信引用
kai
 kai
(@kai)
ゲスト
結合: 23年前
投稿: 64
Topic starter  

woodさん レスありがとうございます。

>>JETではないようです。SQL7でデータベースを作成しています。
>>JET==.MDB ですよね? 今は .MDF を使っています。
>アクセスするエンジン(JET35.DLLやDAO30.DLL)
>の話で物理ファイルの話ではありません
>ODBC接続の場合、DAOでオラクルもアクセスできるよ

そうなのですか。ただ自分がなんのエンジンを使っているか
わかっていません。f(^^;;;

>おおざっぱには
>>レコードセットの派生クラスをつくれば、SQL文を投げる必要はない
>>ということでしょうか?
>だと思いますけど細かい操作したいときはやはり、SQL文を投げる必要
>が出てくるんじゃないかな?

そういうことなのですね。わかりました。

>datetimeは解決したんですか、話の内容私が変えたみたいですけど
>解決したんだったら「済」にして下さい

まだ試行錯誤中なんです。m(__)m


返信引用
kai
 kai
(@kai)
ゲスト
結合: 23年前
投稿: 64
Topic starter  

いろいろ考えたのですが、理解できなかったのでdatetime型を
使うのをやめることにしました。

皆様、アドバイスありがとうございました。


返信引用
x
 x
(@x)
ゲスト
結合: 23年前
投稿: 7
 

[解決]されたようですが、参考までに。

datetime
グレゴリオ暦の1753年1月1日から9999年12月31年までの日付と時刻を、
300分の1秒 (3.33ミリ秒または0.00333秒に相当) の精度で表します。

http://www.microsoft.com/japan/msdn/sqlserver/sql2000/IntlFeaturesInSQLServer20
00.asp#intlfeaturesinsqlserver2000_topic3

http://www.microsoft.com/japan/sql/techinfo/sqleval/self_doc.asp


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました