[英]SQL date Statement
我需要一些幫助來弄清楚SQL語句。
我知道我想表達的意思。
我使用的是php,因此它不需要是SQL,它可以充當過濾器。
偽代碼
$query="SELECT * FROM MyTable WHERE 'TIS' is not older than 2 days or empty = ''$ORDER"; }
我表格中列名的TIS是我以03-12-09
(d,m,y)格式存儲日期。 $ORDER
用於根據其他字段(而非日期)中的值對值進行排序。
我在看
SELECT *
FROM orders
WHERE day_of_order >
(SELECT DATEADD(day,-30, (SELECT MAX(day_of_order) FROM orders)) AS "-30 Days");
但我不太認為即時通訊與此有關。
謝謝
請嘗試以下操作:
SELECT *
FROM MyTable
WHERE COALESCE(TIS, SYSDATE) > SYSDATE - INTERVAL '2' DAY
$ORDER
我不知道您使用的是哪個數據庫-上面的數據庫使用Oracle處理時間間隔的方法。 如果您使用的是SQL Server,則應關閉以下各項:
SELECT *
FROM MyTable
WHERE COALESCE(TIS, GETDATE()) > DATEADD(Day, -2, GETDATE())
$ORDER
在MySQL中,請嘗試以下操作:
SELECT *
FROM MyTable
WHERE COALESCE(TIS, NOW()) > DATE_SUB(NOW(), INTERVAL 2 DAYS)
$ORDER
我希望這有幫助。
所以,我在所有這一切中迷失了。
如何解決的:
_其次在vincebowdren的評論中,“強烈”建議我將該字段上的數據類型更改為Date
,但實際上我沒有,這是一個字符串。
對於我來說,嘗試在具有字符串值的字段上對日期使用SQL操作真是愚蠢。
所以我只是RTFM: http : //dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html
和:
mysql> SELECT something FROM tbl_name -> WHERE DATE_SUB(CURDATE(),INTERVAL 30 DAY) <= date_col;
然后繼續將字段值更改為日期。
這是我完美的查詢:
$query="SELECT * FROM MyTable WHERE DATE_SUB(CURDATE(),INTERVAL 2 DAY) <= TIS OR TIS = 0000-00-00 $ORDER "; }
我要感謝海報的幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.