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

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

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

Re[11]: DateTime


(過去ログ 87 を表示中)

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

■51853 / inTopicNo.1)  DateTime
  
□投稿者/ asami (33回)-(2010/07/22(Thu) 18:13:27)

分類:[.NET 全般] 

2010/07/22(Thu) 18:58:13 編集(投稿者)
 	
LINQ TO SQLを使用してDateTime型のデータを取り出す際に
書式を指定したいのですが、

以下のようにしても実行時に例外となっています。
取得方法としてあやまっていますでしょうか?


// System.Nullable<System.DateTime> InsertDate


var query =
    from f in context.Fruits
    select new
    {
        INSERT_DATE = f.InsertDate.Value.ToString("YYYYMMDD")//ここです
	}

例外は以下のとおりです。
System.NotSupportedException: 
メソッド 'System.String ToString(System.String)' には、
サポートされる SQL への変換がありません。


アドバイスいただけますでしょうか。

よろしくお願いします。

引用返信 編集キー/
■51857 / inTopicNo.2)  Re[1]: DateTime
□投稿者/ マサヤ (69回)-(2010/07/23(Fri) 00:09:36)
こうしてもダメですか?
DateTime.Parse(f.InsertDate.Value).ToString("YYYYMMDD")

引用返信 編集キー/
■51861 / inTopicNo.3)  Re[2]: DateTime
□投稿者/ asami (35回)-(2010/07/23(Fri) 10:10:22)
No51857 (マサヤ さん) に返信
> こうしてもダメですか?
> DateTime.Parse(f.InsertDate.Value).ToString("YYYYMMDD")
>

アドバイスありがとうございます!
教えていただいた方法で以下のようにしてで出来ました。
INSERT_DATE = DateTime.Parse(f.InsertDate.ToString()).ToString("yyyyMM")


当初は以下のように書いていたのですが

INSERT_DATE = f.InsertDate.ToString("yyyyMM"),

これだと以下の例外が発生してしまいました。
「System.String ToString(System.String)' には、サポートされる SQL への変換がありません。」

なぜだめなのか調べてみます。

引用返信 編集キー/
■51863 / inTopicNo.4)  Re[3]: DateTime
□投稿者/ マサヤ (70回)-(2010/07/23(Fri) 10:22:02)
ToString("yyyyMMdd")はDateTimeをstringに変換するときに使える引数つきのToStringだからでは?
f.InsertDateはオブジェクトですよね?
で、一度DateTime型にキャストしてあげればいいかと。

また、f.InsertDateの中身がどんなのがくるか不安定な場合は
INSERT_DATE = DateTime.Parse(f.InsertDate.ToString()).ToString("yyyyMM")

DateTime hogeTime = DateTime.MinValue; // 宣言+初期化
//TryParseで変換できるかどうかのboolが返ってくる
if(DateTime.TryParse(f.InsertDate, out hogeTime))
{
INSERT_DATE = hogeTime.ToString("yyyyMM")
}
else
{
// f.InsertDateに日付以外のものが入ってます
}

実際、動かしてはいないんですが、こんな感じかなぁ。
引用返信 編集キー/
■51869 / inTopicNo.5)  Re[4]: DateTime
□投稿者/ asami (36回)-(2010/07/23(Fri) 10:50:18)
No51863 (マサヤ さん) に返信
詳しい説明までしていただきありがとうございます。
勉強になります。


以下のものはどちらも文字列が返るようになっており
なぜAだけ例外になるのかがわかりません。
どちらもDateTimeをもとにStringにしているとおもうのですが。

@INSERT_DATE = DateTime.Parse(f.InsertDate.ToString()).ToString("yyyyMM")
AINSERT_DATE = f.InsertDate.ToString("yyyyMM"),

// System.Nullable<System.DateTime> InsertDate です。

もしご存知でしたらアドバイスいただけませんでしょうか。
よろしくおねがいします。
引用返信 編集キー/
■51870 / inTopicNo.6)  Re[5]: DateTime
□投稿者/ マサヤ (72回)-(2010/07/23(Fri) 11:00:24)
現場の環境がVS2005でクエリ式使えないのでなんともいえないのですが、
デバッグしてブレークポイントでf.InsertDateの中身(型)を見てみるといいのでは?

引用返信 編集キー/
■51871 / inTopicNo.7)  Re[6]: DateTime
□投稿者/ asami (37回)-(2010/07/23(Fri) 11:03:37)
No51870 (マサヤ さん) に返信
> 現場の環境がVS2005でクエリ式使えないのでなんともいえないのですが、
> デバッグしてブレークポイントでf.InsertDateの中身(型)を見てみるといいのでは?
>

InsertDateはDateTime型です。
なんとか調査してみます。

ありがとうございました。
引用返信 編集キー/
■51873 / inTopicNo.8)  Re[7]: DateTime
□投稿者/ マサヤ (73回)-(2010/07/23(Fri) 11:16:01)
f.InsertDate.ToString()でなにが出力されますか?

引用返信 編集キー/
■51874 / inTopicNo.9)  Re[8]: DateTime
□投稿者/ asami (38回)-(2010/07/23(Fri) 11:42:43)
No51873 (マサヤ さん) に返信
> f.InsertDate.ToString()でなにが出力されますか?
>

確認したところ
String型で"07 1 2010 12:00AM"の書式で入っています。

お手数ですがよろしくおねがいします。
引用返信 編集キー/
■51876 / inTopicNo.10)  Re[9]: DateTime
□投稿者/ マサヤ (74回)-(2010/07/23(Fri) 12:12:23)
context.Fruitsで定義されている型で、InsertDateはDateTime型なんですよね。
System.Nullable<System.DateTime> InsertDateをとりあえず、このNullableをつけなかったらどうなりますか?

varにクエリ結果入れてるみたいだから、型が不定のオブジェクトになっている気がするんですが。


引用返信 編集キー/
■51877 / inTopicNo.11)  Re[10]: DateTime
□投稿者/ asami (39回)-(2010/07/23(Fri) 12:35:29)
2010/07/23(Fri) 12:36:01 編集(投稿者)

No51876 (マサヤ さん) に返信
> System.Nullable<System.DateTime> InsertDateをとりあえず、このNullableをつけなかったらどうなりますか?

ソースでは型はNullableではなくSystem.DateTimeでした。
(こちらに書く際にまちがえてました。失礼しました)

引用返信 編集キー/
■51880 / inTopicNo.12)  Re[11]: DateTime
□投稿者/ asami (40回)-(2010/07/23(Fri) 14:52:27)
No51877 (asami さん) に返信
> 2010/07/23(Fri) 12:36:01 編集(投稿者)
>
> ■No51876 (マサヤ さん) に返信

最終的に以下のようにしました。
INSERT_DATE = String.Format("{0:yyyyMM}", f.InsertDate)

初心者で基本的な質問ばかり
させていただきましてありがとうございました。
解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -