ホーム   フォーラム   FAQ
 
メインメニュー
ログイン
ユーザー名:

パスワード:


パスワード紛失

MS SQLの日付型(datetime型)の項目更新について

  • このフォーラムに新しいトピックを立てることはできません
  • このフォーラムではゲスト投稿が禁止されています
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 .2 | 投稿日時 2008-1-23 14:48 | 最終変更
medras-igara  新米 居住地: 台東区入谷  投稿数: 13
こんにちは。いつもお世話になっております。

Microsoft SQL SERVERの日付型(datetime型)で質問させてください。

MAGICの変数の日付型やPervasive.SQLのデータ上の日付項目を
項目更新でデーターベースMS SQLデータの日付型(datetime型)の項目に
項目更新すると正常にデーターベースに更新されません。

たまに「DBエラー:キャストした文字コードが正しくありません」というエラーが表示されます。


MAGIC変数で未更新の時は空欄にしたいために、
書式を"YYYY/MM/DDZ "にして初期値を"0000/00/00"で項目更新しておりました。

データーベースがPervasive.SQLのデータではこの仕様で問題なく動作します。

しかし、このPervasiveデータの日付項目をMS SQLのデータに
バッチタスクで項目更新しましたが正常に更新されませんでした。

データの値が今年の日付が入ってるデータは正常に更新されますが、
"0000/00/00"や"0001/01/01"など今年の日付から大きく離れた値のデータは更新されませんでした。


初期値の場合IF関数などでdate()で更新すれば問題ないのですが、
それでは未更新のデータか更新済みのデータか判らないデータになります。
出来ることなら空欄などにしたいのです。

"0000/00/00"をMS SQLデータの日付型(datetime型)に更新する方法は無いのでしょうか?


お忙しいところ恐縮ですがお知恵をお貸し下さいませ。
どうかよろしくお願いします。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2008-1-23 15:04
Kurogane  常連   投稿数: 50
無いです。MSSQLでは0000/00/00といった日付データを持つことが出来ません。

SQLServer2005では、
datetime型:1753/01/01〜9999/12/31
smalldatetime型:1900/01/01〜2079/06/06

SQLServer2008では、
datetime型:1753/01/01〜9999/12/31
smalldatetime型:1900/01/01〜2079/06/06
date型:0001/01/01〜9999/12/31
datetime2型:0001/01/01〜9999/12/31
datetimeoffset型:0001/01/01〜9999/12/31

となっています。どの型にせよ、存在しない日付(西暦0年や0月や0日)といった値は保持できないようです。

このことに対処するには、SQLServer側を日付型ではなく、文字列型(Char等)にして対処する必要があります。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2008-1-24 10:59
OKABA  半人前   投稿数: 35
>"0000/00/00"をMS SQLデータの日付型(datetime型)に更新する方法は無いのでしょうか?


日付項目の 

カラム特性/記憶型式→「YYMD Date」

カラム特性/デフォルト値→「0000/00/00」

にすると、更新は可能になります。


役に立つでしょうか?
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2008-1-24 11:27
medras-igara  新米 居住地: 台東区入谷  投稿数: 13
みなさん有り難う御座いました。

>Kuroganeさん

>このことに対処するには、SQLServer側を日付型ではなく、文字列型(Char等)にして対処する必要があります。

私の方でも調べましたら、データリポジトリの[カラム特性]→[SQL]→[タイプ]で、"CHAR(8)"を設定すると自動的にYYYYMMDDの文字型に置き換えるようでした。
この設定だととりあえずMAGICの画面で日付も扱え、なおかつMS-SQL上でも年月日がわかる内容になります。。。

この方法でとりあえずやってみたいと思います。
ありがとうございました。


>OKABAさん

>カラム特性/記憶型式→「YYMD Date」

残念ながらこの方法ではMS-SQL上ではbinary(4)になってしまいます。
MAGICでは問題ありませんが、MS-SQL上のSQL文で直接日付として扱えません。
(正確には扱い辛い。。。)

大変申し訳ないですが今回はKuroganeさんの方法でゆきたいと思います。

どうも、書き込みありがとうございました。
投票数:0 平均点:0.00

  条件検索へ


Copyright (C) Magic Software Japan K.K. All Rights Reserved.
個人情報保護方針 会員規約