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

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

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

Re[3]: C# DateTime型のyyyy/mm/ddのみ表示


(過去ログ 38 を表示中)

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

■19567 / inTopicNo.1)  C# DateTime型のyyyy/mm/ddのみ表示
  
□投稿者/ kimukimu (7回)-(2008/05/26(Mon) 09:34:13)

分類:[C#] 

何度も質問してしまい申し訳ありません。

環境ですが、 言語:VB2008 C#
DB:SQL Server 2005 SQL Server Management Studio Express
です。

現在、DBから取得した値をListViewにて以下の記述で表示させています。

private void frmCustMst_Load(object sender, EventArgs e)
{
SqlConnection Conn = new SqlConnection(OLEDB_CONNECTION_STRING);
try
{
Conn.Open();
SqlCommand Cmd = new SqlCommand(CUSTOMER_TABLE_QUERY, Conn);
SqlDataReader dtr = Cmd.ExecuteReader();
lvCustMst.Items.Clear();
while (dtr.Read())
{
ListViewItem lvi = new ListViewItem();
lvi.Text = dtr["Cust_No"].ToString();
lvi.SubItems.Add(dtr["Cust_Name"].ToString());
lvi.SubItems.Add(dtr["Cust_Name_Ryaku"].ToString());
lvi.SubItems.Add(dtr["Repre_Post_No"].ToString());
lvi.SubItems.Add(dtr["Repre_Address"].ToString());
lvi.SubItems.Add(dtr["Repre_Tel"].ToString());
lvi.SubItems.Add(dtr["Base_Keiyaku_Day"].ToString());
lvi.SubItems.Add(dtr["Futai_Day"].ToString());
lvi.SubItems.Add(dtr["Claim_Tig_Day"].ToString());
lvi.SubItems.Add(dtr["Pay_Site"].ToString());
lvi.SubItems.Add(dtr["Hosoku"].ToString());
lvi.SubItems.Add(dtr["Abol_Flag"].ToString());
lvi.SubItems.Add(dtr["Abol_Reason"].ToString());
lvCustMst.Items.Add(lvi);
}
dtr.Close();
Conn.Close();
}
catch (Exception ex)
{
Conn.Close();
MessageBox.Show(ex.Message, "通知");
}
}

この時、["Base_Keiyaku_Day"]についてはDB上ではDateTime型なので、ListView上では
yyyy/mm/dd hh:mm:ss の形で表示されてしまいます。
これを、yyyy/mm/ddの形で表示したいのですが、どなたか
わかる方いらっしゃらないでしょうか?

また、もうひとつ質問なのですが、

DB上のDateTime型をyyyy/mm/ddの形で設定することは可能でしょうか?

お手数ですが、ご教示のほどお願い致します。
引用返信 編集キー/
■19568 / inTopicNo.2)  Re[1]: C# DateTime型のyyyy/mm/ddのみ表示
□投稿者/ 鶏唐揚 (161回)-(2008/05/26(Mon) 09:42:18)
2008/05/26(Mon) 09:44:31 編集(投稿者)

※SQL Server 2005はほとんど知らないので間違ってる部分もあるかもしれません。ご了承ください。

No19567 (kimukimu さん) に返信
> この時、["Base_Keiyaku_Day"]についてはDB上ではDateTime型なので、ListView上では
> yyyy/mm/dd hh:mm:ss の形で表示されてしまいます。
> これを、yyyy/mm/ddの形で表示したいのですが、どなたか
> わかる方いらっしゃらないでしょうか?
SQL Server 2005のDateTime型って.NETのDateTimeと同等の型なのかな
もしそうなら、ToStringでフォーマット指定すればよいのではないでしょうか。

> また、もうひとつ質問なのですが、
>
> DB上のDateTime型をyyyy/mm/ddの形で設定することは可能でしょうか?
>
> お手数ですが、ご教示のほどお願い致します。
「DateTime型で」というのなら、名前からして無理だと思います。Date型があればできそうな気がしますが。
あるいは、私の場合はyyyy/mm/dd形式の文字列で持たせてしまうこともあります。
そのシステムで、単なる表示にしか使ってない等DateTime型でなくても問題ない場合は
文字列化も検討してみては如何でしょうか。

日付計算する等があると、文字列では面倒な点が多いですが。
引用返信 編集キー/
■19570 / inTopicNo.3)  Re[1]: C# DateTime型のyyyy/mm/ddのみ表示
□投稿者/ じゅで (7回)-(2008/05/26(Mon) 09:50:27)
2008/05/26(Mon) 09:52:30 編集(投稿者)

No19567 (kimukimu さん) に返信

DateTime型に対して普通に設定した時は、たしかこんな感じになると思いますが。
yyyy/MM/dd hh:mm:ss.sss

その際に、SQLから拾ってくるときにTohoge?での表示形式の指定が出来たはずです。
MM/dd/yyyyとかyyyy/MM/ddとかMM/ddとか出来たはずです。

なので、SqlDataReaderで拾ってきている時のSQL文だけで解決できるはずです。
Oracleだろうが、SQL Serverだろうが、確かあったはず・・・確かですorz
Oracleは最近使ってないから自信無し・・・

また、日付の計算などを考えると、日付型を文字列で持つのは得策ではありません。
最悪の場合、文字列でもっても、物によってはいいと思いますが、
その日付型がどのように使用されるかを考えてカラムの型を設定しないと後でなきます。

けどDateTimeってnullだと困るときあるんですよねorz

追記

Tohogeの部分、hogeが変わりますorz

あと、DataReaderは、HasRowsかなんかあったはずですから、
DataReaderにレコードがあるか、チェックするのが吉です。
引用返信 編集キー/
■19571 / inTopicNo.4)  Re[1]: C# DateTime型のyyyy/mm/ddのみ表示
□投稿者/ まどか (533回)-(2008/05/26(Mon) 09:53:54)
> これを、yyyy/mm/ddの形で表示したいのですが、

ToStringには引数があります。
http://msdn.microsoft.com/ja-jp/library/az4se3k1.aspx
ついでに、他の書式もいい機会なので覚えましょう。
http://msdn.microsoft.com/ja-jp/library/26etazsy.aspx

> DB上のDateTime型をyyyy/mm/ddの形で設定することは可能でしょうか?

逆にそういう日付型は個人的に経験がありませんのでわかりません。
アプリで無視すればよいと思いますが。
ただ、更新時はオールゼロとか決まり作っとかないと生データ見たとき汚くなりますね。


あと気づくところは、
ループでリストアイテムを追加してますね。
無駄な描画をさせたりしないように、ListView.BeginUpdateとEndUpdateで囲みましょう。>今回の場合、ループを囲む。

引用返信 編集キー/
■19572 / inTopicNo.5)  Re[2]: C# DateTime型のyyyy/mm/ddのみ表示
□投稿者/ 片桐 (96回)-(2008/05/26(Mon) 10:24:03)
●●を○○するロジックがわからない

そういう時は、まずは、調べることを習慣づけていくといいかもですね

「●● ○○」のキーワードで検索するだけでも色々な情報が得られるはず。
関数とか処理文法とかならTipsというキーワードが使われるので「Tips ●● ○○」なんてやるといいかも

まどかさんがご紹介のページのほかに、
最近ならわんくま内ならおぎわらさんのエントリにもヒントがありましたっけ
http://blogs.wankuma.com/ogiogi/archive/2008/04/09/132337.aspx




引用返信 編集キー/
■19823 / inTopicNo.6)  Re[3]: C# DateTime型のyyyy/mm/ddのみ表示
□投稿者/ kimukimu (8回)-(2008/05/30(Fri) 15:01:07)
沢山回答していただき誠にありがとうございます。
無事に解決しました。ご連絡が遅れてしまい申し訳ありませんでした。
解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -