• ベストアンサー

VB.NET DateTimeの型について

こんにちは。 DateTime型の変数にNothingを指定すると、「#12:00:00 AM#」という値が入ってしまいます。 DateTime型の変数にNothingを指定することはできないのでしょうか? 又、DBの日付型と同じくNullを扱うことはできないのでしょうか? ご存知の方がいらっしゃいましたら、お教え願います。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

Nothingとはすなわちデフォルト値で, ・プリミティブ型では0 ・プリミティブ型を除く値型では全フィールドがNothing ・参照型ではnull参照 です。 値型でnullを扱うには,Nullable(Of T)という型があります。 MSDN: Nullable(T) 構造体 (System) http://msdn.microsoft.com/ja-jp/library/b3h38hb0 Nullable(Of DateTime)とする他,VB9以降ではDateTime?という表現も可能です。 MSDN: null 許容値型 (Visual Basic) http://msdn.microsoft.com/ja-jp/library/ms235245

NoMusicNoLife49
質問者

お礼

ご回答頂き、ありがとうございました。無事問題を解決することができました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

回答No.1

http://msdn.microsoft.com/en-us/library/0x9tb07z%28v=vs.110%29.aspx >For non-nullable value types, Nothing in Visual Basic differs from null in C#. In Visual Basic, if you set a variable of a non-nullable value type to Nothing, the variable is set to the default value for its declared type. In C#, if you assign a variable of a non-nullable value type to null, a compile-time error occurs. >A variable of a value type directly contains its value. Value types include all numeric data types, Boolean, Char, Date, all structures, and all enumerations. http://msdn.microsoft.com/en-us/library/b3h38hb0.aspx

NoMusicNoLife49
質問者

お礼

ご回答頂き、ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • C# LinqでDateTime型の値を取得

    C#でLinqを使用し、DateTime型の値を取得しようとしているですが、 DateTime型の変数に格納する際に、以下のようなエラーが発生してしまいます。 'System.DateTime?' を 'System.DateTime' に暗黙的に変換できません。 どうやらDBから取得したDateTimeの値が、「System.DateTime?」という型になっているようなのですが、原因は何でしょうか? また対応方法を教えてください。 尚、DBはSQL Server2005で.Net3.5です 宜しくお願いします。

  • DateTime型同士の足し算をするにはどうすれば良いでしょうか?

    DateTime型同士の足し算をするにはどうすれば良いでしょうか? DateTime型の変数dに日付のみ、tには時刻のみが入っているとして、これらを加算するにはどうすれば良いでしょうか? どうぞよろしくお願いします。

  • datetime型でNULL値を入れたい。

    現在SQLserver上で、、CSVを一時テーブルに保管し、ある条件に合致する行のみTBLに追加するというストアドを書いています。そのTBLには「datetime型」の列があります。 この作業で、2点問題が発生しています。 (1)CSVファイルから一時テーブルにデータを入れようとすると、datetime列がNULLの場合、型の不一致でエラーが発生します。 (2)上記において、一時テーブルの型をとりあえずvarcharにしておくと入れれるのですが、TBLに追加しようとする際、「convert(datetime,変数)」としているのですが、上手くキャストしてくれません。(「文字列から日付への変換に失敗しました」のような文がでます) どのようにすれば、NULLでもdatetimeに入れられるのでしょうか?教えてください。

  • SQLiteでのDateTimeの扱い

    SQLiteのデータベースにphpで値を保存したいのですが、カラムのタイプがdatetimeだと上手くいきません。 現在の時刻をSQLiteに書き込むということをしたいです。 カラムのタイプをdatetimeからtextに変更するのは避けたいので、下のphpを変更して書き込めるようにするにはどうすれば良いのでしょうか? 詳しい方よろしくお願いします。 SQLite DB ---- CREATE TABLE "dt" ("ID" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL ,"REGIST" DATETIME) ---- PHP ---- $sqlite = 'SQLiteへのパス'; $db = new PDO($sqlite); $now = date('Y-m-d H:i:s'); $nfe = $db->prepare('insert into dt(REGIST) values(?)'); $nfe->execute(array($now)); ----

  • DateTime.ParseExactについて

    DateTime.ParseExactについてハマっております。 VB2010環境にてDateTime.ParseExactの質問をさせてください。 http://www.atmarkit.co.jp/fdotnet/dotnettips/203dateparse/dateparse.html こちらのページを参考してDateTime.ParseExactの使い方を練習しております。 この2つについては希望通り出力されました。 Dim d, f As String Dim dt As DateTime d = "20040824202306" f = "yyyyMMddHHmmss" dt = DateTime.ParseExact(d, f, Nothing) d = "2004年08月24日20時23分06秒" f = "yyyy年MM月dd日HH時mm分ss秒" dt = DateTime.ParseExact(d, f, Nothing) しかし、これについてエラーが出てしまいます。 d = "2004/08/24 20:23:06" f = "yyyy/MM/dd HH:mm:ss" dt = DateTime.ParseExact(d, f, Nothing) 「FormatException はハンドルされませんでした。  文字列は有効な DateTime ではありませんでした。」 試しに日付だけにして試してみましたがやはり同じエラーが出ます。 d = "2004/08/24" f = "yyyy/MM/dd" dt = DateTime.ParseExact(d, f, Nothing) どこが間違っているのでしょうか。 ご指導のほど、よろしくお願い致します。

  • DATETIME型への変換

    2つの文字列、日付をあらわすCHAR(8)と時刻をあらわすCHAR(6)の変数をDATETIME型に変換する方法をご教授いただけますでしょうか?

  • DateTimeを最初からString型にする方法

    DateTimeを最初からString型にする方法 こんにちは。C#のキャストについてお教え頂けませんでしょうか。 下記はファイルの作成日を取得し、それをstring型に変換しています。 FileInfo fi = new FileInfo(FILE); DateTime CreationTime = fi.CreationTime; string CreationTime2 = CreationTime.ToShortDateString(); DateTime型の変数に情報を格納した後に、String型の変数にキャストした情報を格納しています。 これでは二度手間なので、一度でできる方法はないでしょうか? 下記のコードは動きませんが、やりたいのは下記のようなことです。 String CreationTime = (string)fi.CreationTime; 最終的に何がしたいかというと ・データベースよりデータを取得しDataSetに格納 ・データセットの日付列の値を取得。日付列はvarchar型です。 ・日付列の値をstring型変数に格納 ・fi.CreationTimeで取得した日付とDataSetで取得した日付を比較 ・以上のような事をしたいと思っています。よってCreationTimeをString型に変換したいです 宜しくお願い致します!

  • datetime型の秒を切り捨てるには?

    PHP&MySQLで、日付時間入力のフォームを作成しています。 日付時間表示は、「2015年11時4分 7:00」という表示フォーマットにしたいのです。 日付時間入力フォームは、 https://www.softel.co.jp/blogs/tech/archives/4294 こちらを参考にして、datetimepickerのカレンダー入力に、時間入力を組み合わせたデモサンプルを利用しています。 年日時間を個別にデータベース管理する必要はなく、日時分まで管理したいことから、データベースのほうはひとつのカラムにdatetime型で定義しました。 datetimeなので、「2015-11-04 07:00:00」で格納されます。 そこからこの値をとりだして、画面表示させたいのですが、 「2015年11時4分 7:00」で表示させるために、秒を切り捨てたいのですが、 この場合どうすればいいのでしょうか? ************************** mySql:ver5.6 PHP:ver5.4 phpMyAdmin 3.4.9 型:datetime

    • ベストアンサー
    • PHP
  • DateTimeが推奨されている理由は?

    DateTimeが推奨されている理由って何でしょうか? 2038年問題以外に何かありますでしょうか? 日付関連は全てDateTimeを使用した方がいいのでしょうか? 雑な質問ですがよろしくお願いします。

    • 締切済み
    • PHP
  • VB2005からAccessに接続したい

    AccessのDBの列にDatetime型の列があって、日付と時間が入っています。 VB2005から年月日を指定して、その日付と合う行をすべて拾ってくるというプログラムを書いています。 ですが、日付と、日時を比較しているせいか、エラーが出てしまってうまく出来ません。 (データ型が合わないとか、パラメータが不足しているとかのエラーが出ます。) まずはそのまま比較してみたり、Likeを使ったり、Formatを使ったり、データ型をそれぞれ変更して色々とテストしてみたのですが、どうにもうまく出来なくて質問させていただきました。 VB2005からAccessのデータベースへ接続で、日時型のデータから日付が合うものを抽出するにはどうすればいいのでしょうか。 お分かりの方いらっしゃいましたら教えてください。 よろしくお願いいたします。