JavaScriptによるDBアクセス時のDATE型の扱い
ADODBとODBCを用い、Oracle10gに対してアクセスしています。
このとき、OracleのDATE型のカラムをJavaScriptで
受ける際の型で困っています。
HTAとして実行しており、IEのバージョンは7です。
JavaScriptで受けた値をtypeofで確認すると「date」と表示されます。
値を何も指定せずに文字列化すると
「Mon Jul 18 00:00:00 UTC+0900 2010」等の文字列になります。
ですので、JavaScriptのDate型であるように思えました。
受け取りたい形は「yyyy/MM/dd hh:mm:ss」という形なので、
「getYear」「getMonth」等の関数を使用して年部分・月部分を
個別に取得しようとしたところ「オブジェクトを指定してください」
というスクリプトエラーが発生しました。
確認の為、「alert(typeof(new Date()));」を実行してみたところ
「object」と表示されました…。当然ですがこちらの型であれば
「getYear」「getMonth」等の関数を使用することが出来ます。
つまり、JavaScriptで普通にnew Date()として使用する型と
DBにアクセスして取得する値の型は、異なっているらしい
というところまでは分かりました。
以下を教えてください。
・DBアクセスして取得されるこの「date型」は何者ですか?
・この「date」をJavaScriptの「Date型」に変換する方法があればそれを
・この「date」から、年・月等の値を取得する方法
・「date」オブジェクトの持つ関数をプログラミング的に調べる方法
・「date」オブジェクトの持つ関数の一覧等のリファレンス的Webページ
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
再現できないので推測の域を出ませんが、ヒントにでもなれば…
IEとのことなので、MS仕様みたいな気がしますね。
typeofの際のobjectとdateは別物として扱われているようです。
http://msdn.microsoft.com/ja-jp/library/d70y8358 …
以下のあたりがヒントになりそう
http://msdn.microsoft.com/ja-jp/library/bb907043 …
http://msdn.microsoft.com/ja-jp/library/hhw1f6w5 …
手っ取り早く、ヤマカンならば…
DBから受けた変数をdとして、
var dd = new Date( d.toString() );
などで、通常のdateオブジェクトにできそうな気がしますが…
> DBから受けた変数をdとして、
> var dd = new Date( d.toString() );
> などで、通常のdateオブジェクトにできそうな気がしますが…
これは「おっ」と思って試してみたところ、うまくいきました。
対処療法的ですが、とりあえずはこの方法を採用することにしました。
「dateは何者か」という核心部分は不明なままですが
大変助かりました。ありがとうございました。
No.2
- 回答日時:
JavaScriptのDateオブジェクト。
http://www.tohoho-web.com/js/date.htm
JavaScriptの解説書なら必ず書いてあるはずなので、手持ちの解説書を読まれてみてはいかがでしょうか。
「Oracle date」でググって出てきたところから。
http://oracle.se-free.com/dml/07_todate.html
> ・この「date」をJavaScriptの「Date型」に変換する方法があればそれを
JavaScriptで以下のようにすると指定した日付でDateオブジェクトを生成できるので、
Oracleから取得するときのフォーマットをJavaScriptに合うように指定して、文字列として引数にすれば行けるはずです。
dd = new Date("1999/12/31 23:59:59");
> ・この「date」から、年・月等の値を取得する方法
JavaScriptのDateオブジェクトではなく、Oracleのデータから年月だけを指定しての取得という意味でしょうか?
SQLが使えるはずですので、SQLのフォーマット指定で行けませんか?
この回答への補足
>JavaScriptのDateオブジェクトではなく、
>Oracleのデータから年月だけを指定しての取得という意味でしょうか?
両方間違っています。
話の対象は、JavaScriptのtypeofで「date」と表現されるオブジェクトの話です。
これはDB上のDATE型の値を格納する変数としてADODBが生成する型です。
日付(Date)
http://www.tohoho-web.com/js/date.htm
こういう基礎中の基礎の話ではありません。
質問文中でも誤解されないように記述していますが再度記述しておきます。
こちらの型はJavaScriptのtypeofで「object」と表現されます。
>SQLが使えるはずですので、SQLのフォーマット指定で行けませんか?
質問は「どんな方法でもいいのでDBから年月を取得する方法」ではありません。
『「date」から、年・月等の値を取得する方法』です。
DB内で型変換をしてしまうと意味はないので、
DB上のカラムのデータ型そのままで取得する必要があります。
出来ればもう一度、質問文をよく読んでいただけませんでしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・【お題】絵本のタイトル
- ・【大喜利】世界最古のコンビニについて知ってる事を教えてください【投稿~10/10(木)】
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・ハマっている「お菓子」を教えて!
- ・最近、いつ泣きましたか?
- ・夏が終わったと感じる瞬間って、どんな時?
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA 同じ名前のオブジェクトを...
-
多人数のじゃんけんプログラム
-
文字列でクラス型名を取得したい
-
C#でフォームのオブジェクト名...
-
ワイルドカード<?>と型パラメー...
-
bmp画像をjpegやpng画像に圧縮...
-
Strutsでファイルアップロード
-
【C++/CLI】 gcnewしたオブジェ...
-
写真が合成か調べる方法
-
AccessからMSペイントを起動さ...
-
ヘッダファイルにおける文字列...
-
ifstreamクラスとistreamクラス
-
関数オプジェクトとは
-
エクセルVBAで、条件に一致する...
-
javaのコンパイルができません...
-
変数名の付け方
-
範囲外の数値を代入したらエラ...
-
JButton配列でのイベント処理
-
エクセルVBAにおけるON TIMEメ...
-
JSPで<SELECT>の中にDBから持っ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
パワーポイントのVBAでテキスト...
-
VBA 同じ名前のオブジェクトを...
-
Excelで =EMBED("Acrobat Docu...
-
C#でフォームのオブジェクト名...
-
VBAのWindowオブジェクトとWork...
-
EXCEL VBAにて動的にCheckBOXを...
-
時間帯判定をする。
-
ビジュアルC++でボタンの有...
-
COMコンポーネントって何?
-
Object型からDouble型へのキャスト
-
error C2712: オブジェクト ア...
-
LISTBOXの内容が更新されま...
-
ワイルドカード<?>と型パラメー...
-
戻り値がクラスオブジェクト
-
bmp画像をjpegやpng画像に圧縮...
-
VBAからノーツを起動
-
Accessの連結・非連結オブジェ...
-
ワードで画像をドロップすると...
-
CoCreateInstanceでエラーになる。
-
オブジェクトレベルとメタレベル
おすすめ情報