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

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

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.92579 の関連記事表示

<< 0 >>
■92579  MySQLを使って日付(年月)の比較をしたい。
□投稿者/ 初心者 -(2019/10/08(Tue) 17:54:07)

    分類:[ソフトウェア全般] 


    お世話になっております。
    宜しくお願い致します。

    タイトルにも記載の通り、MySQLを使って日付(年月)の比較をしたいと考えております。
    Teble1の中に比較対象となるDATE1とDATE2が2つ入ってると仮定して。

    例えばDATE1を基準としたときに、DATE1よりもDATE2の方が古い日付(年月)の場合はFalseつまり0
    それ以外の場合はTrueつまり0としたいのですがどうクエリに記述したらいいのか分からず
    生き詰まっております。

    分からなすぎて全然書いておらず、参考にはならないと思うのですが
    記述したものを書いておきます。

    SELECT
    ID1
    , ID2
    , DATE_FORMAT(DATE1, '%Y年%m月') AS date1
    , DATE_FORMAT(DATE2, '%Y年%m月') AS date2
    FROM Teble1

    実装したいこと
    本来は縦なのですが横に書かせていただきます。
    ID1   1 2 
    ID2   2 2
    date1  2019年10月 2019年10月
    date2  2017年10月 2020年10月
    olddate 0 1

    こんな感じで実装できればなと思っております。
    お力のほどお貸しいただければと思います。

親記事 /過去ログ160より / 関連記事表示
削除チェック/

■92580  Re[1]: MySQLを使って日付(年月)の比較をしたい。
□投稿者/ 魔界の仮面弁士 -(2019/10/08(Tue) 17:59:51)
    No92579 (初心者 さん) に返信
    > 生き詰まっております。
     行き詰まる?

    > 例えばDATE1を基準としたときに、DATE1よりもDATE2の方が古い日付(年月)の場合はFalseつまり0
    > それ以外の場合はTrueつまり0としたいのですがどうクエリに記述したらいいのか分からず

    False も True も固定値 0 で表すのなら、そもそも判断する必要も無いかも。

    DATE1 < DATE2 を「0」
    DATE1 ≧ DATE2 を「1」と表すなら、たとえばこうとか。

    SELECT ID1, ID2, CASE WHEN DATE1 < DATE2 THEN 0 ELSE 1 END As olddate FROM Teble1
記事No.92579 のレス /過去ログ160より / 関連記事表示
削除チェック/

■92583  Re[2]: MySQLを使って日付(年月)の比較をしたい。
□投稿者/ 初心者 -(2019/10/09(Wed) 09:31:15)
    No92580 (魔界の仮面弁士 さん) に返信

    >  行き詰まる?

    漢字間違えました…。

    > False も True も固定値 0 で表すのなら、そもそも判断する必要も無いかも。
    >
    > DATE1 < DATE2 を「0」
    > DATE1 ≧ DATE2 を「1」と表すなら、たとえばこうとか。
    >
    > SELECT ID1, ID2, CASE WHEN DATE1 < DATE2 THEN 0 ELSE 1 END As olddate FROM Teble1

    実装できました、ありがとうございます。
    他にも条件を加える場合は、CASE分を増やせばいいんですよね?

    (魔界の仮面弁士さんが教えてくださった例えの不等号が逆の場合)
    DATE1 < DATE2 を「0」
    DATE1 ≦ DATE2 を「1

    CASE WHEN DATE1 < DATE2 THEN 0 ELSE 1 END As nowdate


記事No.92579 のレス /過去ログ160より / 関連記事表示
削除チェック/

■92582  Re[2]: MySQLを使って日付(年月)の比較をしたい。
□投稿者/ kaina -(2019/10/09(Wed) 09:23:24)
記事No.92579 のレス /過去ログ160より / 関連記事表示
削除チェック/

■92585  Re[3]: MySQLを使って日付(年月)の比較をしたい。
□投稿者/ 初心者 -(2019/10/09(Wed) 09:36:03)
    No92582 (kaina さん) に返信

    ご回答ありがとうございます

    > DATE1とDATE2はdatetime型かな?

    DATE1とDATE2はdate型です。

    > であれば、DATEDIFF関数を使用すると良いかと思います。
    > こんな感じで使用し、DATE1とDATE2の差分の数値が求められます。
    > DATEDIFF(DATE1, DATE2) > 0
    > 以下、MySQLの公式リファレンスになります。
    > https://dev.mysql.com/doc/refman/5.6/ja/date-and-time-functions.html#function_datediff

    DATEDIFFで差分を求められるんですね。
    今回は大きいか・小さいかだけを知りたかったので、今後の参考にしたいと思います。
    勉強になりました。
記事No.92579 のレス /過去ログ160より / 関連記事表示
削除チェック/

■92587  Re[4]: MySQLを使って日付(年月)の比較をしたい。
□投稿者/ kaina -(2019/10/09(Wed) 10:32:44)
    ちょっと不正確な表現になっていたので、訂正します。
    比較に使用するデータ型はDATETIME型でもDATE型でも文字列(日付式(YYYY-MM-DD))でも比較できます。

    ただし、初心者さんがおっしゃる通り、単純に大きいか小さいかの比較であれば
    弁士さんの方法で問題ありません。

    ついでですが、日付の比較に関するMySQLの公式リファレンスのURLを載せておきますので、
    お時間があれば一読いただければ理解が深まるのではないかと思います。

    https://dev.mysql.com/doc/refman/5.6/ja/using-date.html

    後、解決したのであれば、解決済みのチェックお願いします。
記事No.92579 のレス /過去ログ160より / 関連記事表示
削除チェック/

■92590  Re[5]: MySQLを使って日付(年月)の比較をしたい。
□投稿者/ 初心者 -(2019/10/09(Wed) 11:23:00)
    No92587 (kaina さん) に返信
    > ちょっと不正確な表現になっていたので、訂正します。
    > 比較に使用するデータ型はDATETIME型でもDATE型でも文字列(日付式(YYYY-MM-DD))でも比較できます。
    >
    > ただし、初心者さんがおっしゃる通り、単純に大きいか小さいかの比較であれば
    > 弁士さんの方法で問題ありません。
    >
    > ついでですが、日付の比較に関するMySQLの公式リファレンスのURLを載せておきますので、
    > お時間があれば一読いただければ理解が深まるのではないかと思います。
    >
    > https://dev.mysql.com/doc/refman/5.6/ja/using-date.html
    >
    > 後、解決したのであれば、解決済みのチェックお願いします。

    URL参考になります。ありがとうございます。
    回答待ちだったため念のためチェックを入れてなかったのですが、チェックしておきます。
記事No.92579 のレス / END /過去ログ160より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -