- - PR -
固定文字列とDBのint型カラムの日付加算の方法について
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2008-08-08 17:57
初めまして。
ふじと申します。 SQLServer2005を使っています。 固定文字列(1970/01/01)と、DBで保持しているint型のカラムの日付加算をして、datetime型に変換する方法について質問です。 皆様のご助力をよろしくお願いいたします。 以下の方法を試したのですが、うまく行きませんでした。 @固定文字列をCSVファイルで保持させる フラット ファイル ソースでCSVファイルを指定して、データ変換を使ってデータベースタイムスタンプ型に変換しました。 データフローで派生列を使って、DATETIME関数にて実現できると思っているのですが、派生列のインプットが1つしか指定できないために日付加算までいたれませんでした。 A派生列で固定文字列を新しい列として追加する(データベースタイムスタンプ型) OLE DB ソースでDBを指定し、派生列で「1970/01/01」をデータベースタイムスタンプ型で新しい列として追加しました。DATETIME関数を実行するまでにいたったのですが、1970/01/01が1905/05/23と読み込まれてしまい、加算結果が誤っていました。 B派生列で固定文字列を新しい列として追加する(文字列型) OLE DB ソースでDBを指定し、派生列で「1970/01/01」を文字列型で新しい列として追加しました。データ変換を使ってデータベースタイムスタンプ型にしようとしたら、"データが失われる可能性があるため、値を変換できませんでした。"というエラーになってしまいました。 固定文字列の保持方法も含めて、良い方法をご教授願います。 | ||||
|
投稿日時: 2008-08-08 18:32
単純にSQLでっていう話なら
っていうのじゃダメですか? | ||||
|
投稿日時: 2008-08-18 10:12
johnesさん
ご回答ありがとうございます。 質問の際に書き忘れたのですが、SSISで実装しております。 その中でSQLを実行する方法が分からなかったので、以下の方法で実装してみた次第でした。 記述不足で申し訳ありません・・・ 引き続きSQLを使っての方法を模索いたしますが、他に良い方法があればご教授お願いいたします。 | ||||
|
投稿日時: 2008-08-19 09:33
タイムスタンプ型を使っているのが問題では?
データ型 timestamp は単に数値を加算していくだけのもので、日付や時刻を保持する機能はありません。日付や時刻を記録するには datetime 型を使用します。 <http://msdn.microsoft.com/ja-jp/library/ms182776(SQL.90).aspx> | ||||
|
投稿日時: 2008-08-20 09:56
よっしーさん
ご回答ありがとうございます。 データベースとSSISで使用する型が混乱してしまいました。 すみませんでした。 データベースではdatetime 型、SSISのデータフロー変換(データ変換、派生列etc)ではVisual Basicのデータベースタイムスタンプ型を使用しています。 johnesさんのSQLを使用する方法として、データアクセスモードを調査しており、テーブルアクセスではなくSQLコマンドアクセスにすることで欲しい情報が取れました。 ただいまこの方法でテストを行っています。 johnesさん、よっしーさん ご回答ありがとうございました。 |
1