C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[1]: ACCESSへのINSERT


(過去ログ 92 を表示中)

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■54805 / inTopicNo.1)  ACCESSへのINSERT
  
□投稿者/ ひなげし (3回)-(2010/11/02(Tue) 22:18:10)

分類:[VB.NET/VB2005 以降] 

ACCESSの列(DATETIME型)にINSERTしたいんですが

たとえば"2020"という文字列をDATETIME型の時刻"20:20:00"に変換したいんですがうまくいきません。
DateTime.Parse(Format(CInt("2020"), "00:00"))で試みたんですが
結果は"2010/11/02 20:20:00"みたいになりす。"20:20:00"だけが欲しいんですが。

これではACCESSのDATETIME型の列の"00:00:00"といった時刻形式に追加することができません。
どうすればいいのでしょうか?
引用返信 編集キー/
■54807 / inTopicNo.2)  Re[1]: ACCESSへのINSERT
□投稿者/ ひなげし (4回)-(2010/11/02(Tue) 22:41:22)
ごめんなさい。入りました。
解決済み
引用返信 編集キー/
■54808 / inTopicNo.3)  Re[1]: ACCESSへのINSERT
□投稿者/ 魔界の仮面弁士 (1909回)-(2010/11/02(Tue) 22:43:27)
No54805 (ひなげし さん) に返信
> 結果は"2010/11/02 20:20:00"みたいになりす。"20:20:00"だけが欲しいんですが。

Jet の日付型は、内部的には DateTime.ToOADate/FromOADate に相当する値です。

その仕様上、ここに「時刻部のみ」のデータを格納する事はできないのですが、
Access の表示上だけの話で良いなら、1899年12月30日の時刻を指定すれば OK です。

たとえば、
 SQL = "INSERT INTO TBL (COL1) VALUES ( #12/30/1899 20:20:00# )"
という SQL を流せば、Access 上では "20:20:00" であるかのように見えます。


> DateTime.Parse(Format(CInt("2020"), "00:00"))で試みたんですが

この場合、今日の時刻になってしまいますね。Date 型の値として得るなら、
 Dim dt As Date = Date.FromOADate(0.0).Add(New TimeSpan(20, 20, 0))
とか
 Dim dt As Date = Date.FromOADate(0.0).AddHours(20.0).AddMinutes(20.0)
とか、
  Dim d As Double = Date.ParseExact("2020", "HHmm", Nothing).ToOADate()
  Dim dt As Date = Date.FromOADate(d - Fix(d))
とか。

引用返信 編集キー/
■54811 / inTopicNo.4)  Re[2]: ACCESSへのINSERT
□投稿者/ ひなげし (5回)-(2010/11/02(Tue) 23:28:06)
>>DateTime.Parse(Format(CInt("2020"), "00:00"))で試みたんですが
>
> この場合、今日の時刻になってしまいますね。Date 型の値として得るなら、
>  Dim dt As Date = Date.FromOADate(0.0).Add(New TimeSpan(20, 20, 0))
> とか
>  Dim dt As Date = Date.FromOADate(0.0).AddHours(20.0).AddMinutes(20.0)
> とか、
> Dim d As Double = Date.ParseExact("2020", "HHmm", Nothing).ToOADate()
> Dim dt As Date = Date.FromOADate(d - Fix(d))
> とか。

ありがとうございます。この方法で解決できました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -