質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

4回答

10169閲覧

今日の日付に近い順に並べたいのですが

YutakaTakgiwa

総合スコア7

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2015/06/08 16:40

編集2015/06/09 10:33

現在todoリストを作っています。
expectedは予定日として使っています
基本的には未来の日付が入り、予定日を過ぎたら過去の日付も入ることもあります。

select*from task where kanryo is null order by expected asc;

現在この記述で普通に昇順にしています。
expected はdate型です。

strtotime や asb を使うのだろうとは思うのですが、自分なりにいろいろ試してみましたが上手くいかず・・・
phpのバージョンは5.4を使用しています。
よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

DBが関係する場合、PHPのプログラム側ではなくDB側で処理をさせた方がプログラムが複雑化しないため良いかと思います。

こちらは私の考え方ですが、DBで可能な事は出来る限りDB内の処理で行うよう心掛けています。
もし、DB定義等の変更が発生した場合など修正を行う部分を出来る限り少なくなるようにしたいと言う思いからなんですが・・・・

悪く言い換えれば手抜きですよね・・・

投稿2015/06/09 04:48

takayukiinaba

総合スコア1158

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

YutakaTakgiwa

2015/06/09 10:51

DB側で処理? その発想はありませんでした! 一つ視野が広がりました、ありがとうございます。 しかしやり方が全くわかりません、もしよかったらアドバイスお願いします。
takayukiinaba

2015/06/09 11:39

私の解釈が正しいかわかりませんが、エラーログを見る限りSQLServerを利用しているみたいでしたので、SQLServer関連で調べてみました。 ただ、日付差分をとりたいのであればDATEDIFFを利用すれば何とかなるのではないかと思います。 参考URL:http://www.sql-master.net/articles/SQL573.html ここで取得された日数順にソートしてみては如何ですか?
YutakaTakgiwa

2015/06/09 13:52

最終的に abs(datediff(CURDATE(), expected))で出来ました^^ takayukiinabaさん,ありがとうございました。
guest

0

ベストアンサー

-- 今日日付とexpectedの日付の差分の絶対値の昇順
order by abs(datediff(CURDATE(), expected) asc
こういうことですか?

投稿2015/06/09 02:19

編集2015/06/09 02:23
kutsulog

総合スコア985

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

YutakaTakgiwa

2015/06/09 10:46

回答ありがとうございます。 このような回答を求めていました! 足らない説明で気付いていただき感激です! しかし You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'asc' at line 2SQL このようなエラーが出てしまいました。 恥ずかしながら原因がわかりません、何がいけないのでしょうか?
YutakaTakgiwa

2015/06/09 13:55

丸写ししただけでよく確認しませんでした>< abs(datediff(CURDATE(), expected)) で出来ました。 kutyulogさん、ありがとうございました^^
guest

0

ORDER BY *** DESC (降順整列)
とすればよいのではなく、どうしても昇順の結果を使いたい理由があるということでしょうか?

data型だと年月日までの情報なので、複数同一日の整列は約束されない問題があります
そのあたりを解決されたい意図があるでしょうか?

投稿2015/06/09 01:08

takito

総合スコア3111

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

YutakaTakgiwa

2015/06/09 10:35

説明が足らず勘違いさせてすみませんでした。 回答していただきありがとうございます。
guest

0

型やどんなデータが入るのかの例を示したほうがちゃんと答えが付きますよ。
「今日の日付に近いデータ」と言う言い方があいまいなので、takitoさんは過去のデータ限定でお話しされてるように思います。
takitoさんがどうのこうのではなくて勘違いされる質問の仕方だというお話です。

過去の日付のみですか?未来の日付も入りますか?「今日の日付に近いデータ」って何ですか?って言うことがひっかかります。

もう少し回答しやすく、条件を示しては?と思います。

投稿2015/06/09 02:15

landy77

総合スコア1614

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

YutakaTakgiwa

2015/06/09 10:40

アドバイスありがとうございます。 情報を増やしてみました。回答してもらうのに他にも必要な情報がアドバイスお願いします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問