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

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

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

SQL日付取得について

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

■92124 / inTopicNo.1)  SQL日付取得について
  
□投稿者/ 勉強中 (9回)-(2019/08/28(Wed) 16:07:34)

分類:[ASP.NET (VB)] 

開発環境:Windows7
フレームワーク:4.0

いつもお世話になっております。
今回お聞きしたいことは、SQLから日付データを取得するについてです。

例)LAST_UPDATE=日付データ(2018-09-03 19:14:23)が入っています。

SELECT(LAST_UPDATE) FROM(tbl_date)とコードを書き
日付データ(2018-09-03 19:14:23)を取得することはできたのですが、
実装としましては2018-09-03←この部分だけ取得したいです。

色々と試したのですが取得できず...。
どうやったら年月日だけ取得することができるのでしょうか?

教えて頂けると幸いです。宜しくお願い致します。
引用返信 編集キー/
■92125 / inTopicNo.2)  Re[1]: SQL日付取得について
□投稿者/ kiku (130回)-(2019/08/28(Wed) 16:38:00)

SQLServer2008以降であれば、下記のSQL文で取得できそうです。

SELECT CONVERT(date, LAST_UPDATE) FROM(tbl_date)

引用返信 編集キー/
■92126 / inTopicNo.3)  Re[1]: SQL日付取得について
□投稿者/ WebSurfer (1889回)-(2019/08/28(Wed) 16:39:49)
No92124 (勉強中 さん) に返信

SQL とは何ですか? SQL Server? Access? MySQL? Oracle? その他?

ASP.NET アプリのようですが、ブラウザに表示するときに 2018-09-03 とできれば
良いのであれば、DB サーバーから取得してから希望の形にフォーマッティングすれ
ばよいのではないですか?
引用返信 編集キー/
■92127 / inTopicNo.4)  Re[2]: SQL日付取得について
□投稿者/ 勉強中 (10回)-(2019/08/28(Wed) 17:18:17)
No92126 (WebSurfer さん) に返信
> ■No92124 (勉強中 さん) に返信
>
> SQL とは何ですか? SQL Server? Access? MySQL? Oracle? その他?
>
すみません、説明不足でした。MySQLでございます。

> ASP.NET アプリのようですが、ブラウザに表示するときに 2018-09-03 とできれば
> 良いのであれば、DB サーバーから取得してから希望の形にフォーマッティングすれ
> ばよいのではないですか?
すみません、DBを触り始めたばかりにほとんど知識が無い状態なのですが、フォーマッティングというのは
例えばどうすればいいのでしょうか?

引用返信 編集キー/
■92128 / inTopicNo.5)  Re[2]: SQL日付取得について
□投稿者/ 勉強中 (11回)-(2019/08/28(Wed) 17:19:02)
No92125 (kiku さん) に返信
>
> SQLServer2008以降であれば、下記のSQL文で取得できそうです。
>
> SELECT CONVERT(date, LAST_UPDATE) FROM(tbl_date)
>

試してみたのですが、やはり取得できませんでした...。
引用返信 編集キー/
■92129 / inTopicNo.6)  Re[3]: SQL日付取得について
□投稿者/ kiku (131回)-(2019/08/28(Wed) 17:24:15)
No92128 (勉強中 さん) に返信
> 試してみたのですが、やはり取得できませんでした...。

MySQLならたぶん下記で取得できると思います。
テストはしていません。

SELECT DATE_FORMAT(LAST_UPDATE, '%Y-%m-%d') FROM(tbl_date)

引用返信 編集キー/
■92130 / inTopicNo.7)  Re[3]: SQL日付取得について
□投稿者/ Hongliang (878回)-(2019/08/28(Wed) 17:29:47)
> すみません、DBを触り始めたばかりにほとんど知識が無い状態なのですが、フォーマッティングというのは
> 例えばどうすればいいのでしょうか?

DBではなく、DBでデータを取得した後の、プログラム側の処理です。
例えばVB.NETであれば以下のようなコードで、年-月-日の文字列を取得できます。

Dim updatedTime As DateTime ' DBから取得した日時データがこの変数に格納されたとする
Dim formatted As String = updatedTime.ToString("yyyy-MM-dd")
引用返信 編集キー/
■92131 / inTopicNo.8)  Re[3]: SQL日付取得について
□投稿者/ WebSurfer (1890回)-(2019/08/28(Wed) 18:03:38)
No92127 (勉強中 さん) に返信

>>ASP.NET アプリのようですが、ブラウザに表示するときに 2018-09-03 とできれば
>>良いのであれば、DB サーバーから取得してから希望の形にフォーマッティングすれ
>>ばよいのではないですか?
> すみません、DBを触り始めたばかりにほとんど知識が無い状態なのですが、フォーマッティングというのは
> 例えばどうすればいいのでしょうか?

ブラウザに表示するときに 2018-09-03 とできればよいのですか?
そうでないとすると、答えは質問者さんの役に立たないのですが。

それで良ければ、ASP.NET Web Forms なのか、MVC なのかを教えて
ください。

引用返信 編集キー/
■92138 / inTopicNo.9)  Re[4]: SQL日付取得について
□投稿者/ 勉強中 (12回)-(2019/08/29(Thu) 14:13:40)
No92131 (WebSurfer さん) に返信
> ■No92127 (勉強中 さん) に返信
>
> >>ASP.NET アプリのようですが、ブラウザに表示するときに 2018-09-03 とできれば
> >>良いのであれば、DB サーバーから取得してから希望の形にフォーマッティングすれ
> >>ばよいのではないですか?
>>すみません、DBを触り始めたばかりにほとんど知識が無い状態なのですが、フォーマッティングというのは
>>例えばどうすればいいのでしょうか?
>
> ブラウザに表示するときに 2018-09-03 とできればよいのですか?
> そうでないとすると、答えは質問者さんの役に立たないのですが。

できれば2018年9月3日と表示したいです。何度も申し訳ございません。

> それで良ければ、ASP.NET Web Forms なのか、MVC なのかを教えて
> ください。

ASP.NET Web Formsでございます。
引用返信 編集キー/
■92139 / inTopicNo.10)  Re[4]: SQL日付取得について
□投稿者/ 勉強中 (13回)-(2019/08/29(Thu) 14:17:47)
kikuさん、Hongliangさん参考となるコードありがとうございます。
お二方のを参考に実装できるようがんばっていますので結果の方は少々お待ち下さい...。
引用返信 編集キー/
■92140 / inTopicNo.11)  Re[5]: SQL日付取得について
□投稿者/ WebSurfer (1892回)-(2019/08/29(Thu) 15:53:17)
No92138 (勉強中 さん) に返信

まず、DateTime 型の書式指定について、以下の記事にざっとで良いので目を通してく
ださい。

カスタム日時書式指定文字列
https://docs.microsoft.com/ja-jp/dotnet/standard/base-types/custom-date-and-time-format-strings

> できれば2018年9月3日と表示したいです。

ということは、年は 4 桁の数値、月は 1 〜 12、日は 1 〜 31 ということですので
書式指定子はそれぞれ "yyyy", "M", "d" を組み合わせて "yyyy年M月d日" というこ
とになります。


> ASP.NET Web Formsでございます。

単純に Label や TextBox に "yyyy年M月d日" 形式で表示したいのであれば、以下のよ
うにします。

DateTime today = DateTime.Now;
Label1.Text = today.ToString("yyyy年M月d日");

ただ、そういうケースはあまりなくて、MySQL からデータを取得して表示ということです
と、SqlDataSource + GridView などでデータバインドして表示したいというケースが多い
と思います。

そのような場合の書式設定ですが、上の Label.Text プロパティに設定するようなわけに
はいかなくて、GridView の場合ですはが、以下の <Columns> の中のようにすることにな
ります。

<asp:GridView ID="GridView1" runat="server" 
    AutoGenerateColumns="False" 
    DataKeyNames="OrderID" DataSourceID="SqlDataSource1">
    <Columns>
        ・・・中略・・・
        <asp:BoundField DataField="RequiredDate" 
            HeaderText="RequiredDate" 
            SortExpression="RequiredDate" 
            DataFormatString="{0:yyyy年M月d日}" />
        <asp:TemplateField HeaderText="ShippedDate" SortExpression="ShippedDate">
            <ItemTemplate>
                <asp:Label ID="Label1" runat="server" 
                   Text='<%# Bind("ShippedDate", "{0:yyyy年M月d日}") %>'>
                </asp:Label>
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>

RequiredDate を BoundField をつかって、ShippedDate を TemplateField を使って表示し
ていますが、GridView では両方ともよくある例です。

不明点があったら質問してください。

引用返信 編集キー/
■92141 / inTopicNo.12)  Re[5]: SQL日付取得について
□投稿者/ WebSurfer (1893回)-(2019/08/29(Thu) 15:55:59)
No92138 (勉強中 さん) に返信

【注】

MySQL から ADO.NET + Connector/NET を利用してデータを取得していると思いますが、
そうすると MySQL から取得した日付は DateTime 型になるはずです。それが前提条
件で、そうでない場合は話が違ってきますので注意してください。
引用返信 編集キー/
■92151 / inTopicNo.13)  Re[6]: SQL日付取得について
□投稿者/ 勉強中 (14回)-(2019/08/30(Fri) 10:06:50)
No92140 (WebSurfer さん) に返信
> ■No92138 (勉強中 さん) に返信
>
> まず、DateTime 型の書式指定について、以下の記事にざっとで良いので目を通してく
> ださい。
>
> カスタム日時書式指定文字列
> https://docs.microsoft.com/ja-jp/dotnet/standard/base-types/custom-date-and-time-format-strings
>
>>できれば2018年9月3日と表示したいです。
>
> ということは、年は 4 桁の数値、月は 1 〜 12、日は 1 〜 31 ということですので
> 書式指定子はそれぞれ "yyyy", "M", "d" を組み合わせて "yyyy年M月d日" というこ
> とになります。
>
>
>>ASP.NET Web Formsでございます。
>
> 単純に Label や TextBox に "yyyy年M月d日" 形式で表示したいのであれば、以下のよ
> うにします。
>
> DateTime today = DateTime.Now;
> Label1.Text = today.ToString("yyyy年M月d日");
>
> ただ、そういうケースはあまりなくて、MySQL からデータを取得して表示ということです
> と、SqlDataSource + GridView などでデータバインドして表示したいというケースが多い
> と思います。
>
> そのような場合の書式設定ですが、上の Label.Text プロパティに設定するようなわけに
> はいかなくて、GridView の場合ですはが、以下の <Columns> の中のようにすることにな
> ります。
>
> <asp:GridView ID="GridView1" runat="server"
> AutoGenerateColumns="False"
> DataKeyNames="OrderID" DataSourceID="SqlDataSource1">
> <Columns>
> ・・・中略・・・
> <asp:BoundField DataField="RequiredDate"
> HeaderText="RequiredDate"
> SortExpression="RequiredDate"
> DataFormatString="{0:yyyy年M月d日}" />
> <asp:TemplateField HeaderText="ShippedDate" SortExpression="ShippedDate">
> <ItemTemplate>
> <asp:Label ID="Label1" runat="server"
> Text='<%# Bind("ShippedDate", "{0:yyyy年M月d日}") %>'>
> </asp:Label>
> </ItemTemplate>
> </asp:TemplateField>
> </Columns>
> </asp:GridView>
>
> RequiredDate を BoundField をつかって、ShippedDate を TemplateField を使って表示し
> ていますが、GridView では両方ともよくある例です。
>
> 不明点があったら質問してください。

詳しく書いて頂きありがとうございます。
理解するのに少々時間がかかりそうなので先に返信いたしました。
ゆっくり読んで一つずつ理解しながら実装してみますので、結果報告が遅れると思いますが
宜しくお願いいたします。












引用返信 編集キー/

このトピックをツリーで一括表示


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

このトピックに書きこむ