已知資料id 是 360 、 381、 383、 382
該如何取出這些文章並且照上述順序撈出資料
如下
SELECT * FROM `data` WHERE `d_id` in(360,381,383,382) ORDER BY FIELD(`d_id`, 360,381,383,382)
SELECT * FROM data_set WHERE d_COD <> NULL ORDER BY d_id DESC
這樣不行 因為NULL值什麼都不是 沒辦法比對
SELECT * FROM data_set WHERE d_COD = NULL ORDER BY d_id DESC
這樣也不行 因為NULL值什麼都不是 沒辦法比對
要這樣 IS NOT
SELECT * FROM data_set WHERE d_COD IS NOT NULL ORDER BY d_id DESC
或 IS
SELECT * FROM data_set WHERE d_COD IS NULL ORDER BY d_id DESC
感覺要用語意的比較,無法用數值的比對,
相當哲學!!!
高興
ini_set(‘date.timezone’,’Asia/Taipei’);
date_default_timezone_set(‘Asia/Taipei’);
範例code
<?php
echo ‘主機時間: ‘.date(‘Y-m-d H:i:s’).'<br>’;//主機時間
date_default_timezone_set(‘Asia/Taipei’); //這邊用這一種
echo ‘更改後時間: ‘.date(‘Y-m-d H:i:s’).'<br>’; //再秀一遍更改後
?>
再來是MYSQL 部分,由於主機時間你用PHP改只是秀出正確而已,並沒有實際更正為你要的時區
因此你若用MYSQL 裡的NOW() 或是 CURDATE() 都有可能是GMT 00:00,
而台灣時區是GMT +08:00,所以SELECT出來的時間會不如預期,
因此我們可以採用CONVERT_TZ(時間變數,’+00:00從什麼時區’,’+08:00要成為的時區’)
下方範例code
我要選出訂單表格(order)裡的屬於今天任何時間的訂單(order_datetime是訂單時間 到秒 )
所以今天的日期NOW() 然後因為時區不同要改為(CONVERT_TZ(NOW(),’+00:00′,’+08:00′)
然後DATEDIFF(時間日期 , 設定時間日期)相減的位移天數 ,我們要今天所以相減為0
因此MYSQL code如下
SELECT * FROM order WHERE DATEDIFF(CONVERT_TZ(NOW(),’+00:00′,’+08:00′) , order_datetime ) = 0