ホームページ  >  記事  >  バックエンド開発  >  hph+mysqlで現在時刻に従って時刻を並べ替えるにはどうすればよいですか?

hph+mysqlで現在時刻に従って時刻を並べ替えるにはどうすればよいですか?

WBOY
WBOYオリジナル
2016-06-13 13:45:58950ブラウズ

hph+mysql は現在時刻に従って時刻をどのように並べ替えますか?
次のコンテンツがライブラリにあります:
+-----+-------+---------- ----- --------+
| テキスト |
+-----+------+------ ----- ----------+
| 2012-03-09 14:30:28 | コンテンツ 2 | 13:40:36 |
| 2012-03-09 14:50:43 | コンテンツ 4 | 5 | コンテンツ 5 | 2012-03-09 15:21:22 |
| 2012-03-09 15:25:07 16:21:43 |
| 2012-03-09 14:21:13 | コンテンツ 9 | ----------+ -------+----------+

現在時刻が 2012-03 の場合-09 14:10:05 インターネット上の現在時刻です
このように並べ替えて表示したいです
同じ時刻であれば一番上にあるものが現在時刻に近いです。は挿入順です
次は現在時刻より大きい、つまり時刻がまだ到着していないものも挿入順です
下にあるものは時間が経過しているものですすでに現在時刻より小さいですが、大きい時刻が小さい時刻の上に配置されます

+----- +----------+------------ --------+
| テキスト |
+----- +------- --------+
| コンテンツ 8 | 2012-03-09 14:30:28 |
| 2012-03-09 14:50:43 |
| 2012 -03-09 15:25:07 |
| 2012-03-09 16:21:43 | コンテンツ 2 |
| コンテンツ 9 | 2012-03-09 12:21:55 |
| コンテンツ 4 -------+---------- +
$result=mysql_query() の書き方


------解決策----------------- ---

実際には
set @tt='2012-03-09 14:10:05';
SELECT * FROM `times` order by t>@tt desc, if(t>@tt,t-@tt , @tt-t)
は問題があります
if(t>@tt,t-@tt,@tt-t)はabs(t-@tt)と同等ですが、absを使用すると正しい結果が得られませんいつ(t-@tt)。 datetime 型は算術演算に直接関与できないことがわかります

set @tt='2012-03-09 14:10:05';
SELECT * FROM `times` のように記述する必要がありますorder by t>@ tt desc, abs(UNIX_TIMESTAMP(t)-UNIX_TIMESTAMP(@tt))アプリケーションの場合、
$tt=date('Y-m-d H:i:s'); になります。
$result =mysql_query("SELECT * FROM mysf order by kfsj>'$tt' desc, abs(UNIX_TIMESTAMP(kfsj)-UNIX_TIMESTAMP('$tt'))");

時間定数は引用符で囲みます

$tt が常に時刻の現在の値を取る場合、$tt は now() で置き換えることができます


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。