sql如何使小於今天的欄位設成null? |
尚未結案
|
pedro
尊榮會員 發表:152 回覆:1187 積分:892 註冊:2002-06-12 發送簡訊給我 |
|
Fishman
尊榮會員 發表:120 回覆:1949 積分:2163 註冊:2006-10-28 發送簡訊給我 |
Hi pedro, SQL Server :
SELECT ISDATE(ORDERDATE) AS ISORDER, ORDERDATE, NEWFIELDNAME = CASE WHEN ORDERDATE - FLOOR(CAST(GETDATE() AS FLOAT)) >= 0 THEN ORDERDATE ELSE NULL END FROM ORDERDETAIL---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman |
pedro
尊榮會員 發表:152 回覆:1187 積分:892 註冊:2002-06-12 發送簡訊給我 |
謝謝Fishman大大的回覆
這段語法很妙, 幾乎可以達到功能, 不過
SELECT ISDATE(ORDERDATE) AS ISORDER, ORDERDATE, NEWFIELDNAME = CASE WHEN ORDERDATE - FLOOR(CAST(GETDATE() AS FLOAT)) >= 0 THEN ORDERDATE ELSE NULL END FROM ORDERDETAIL select Cast(GetDate() as float) --值為38132.728 select Cast('20040505' as float) --值為20040505.0第三個select 為我的OrderDate格式, 二式相減大於0 實際是20040505那一筆應為null 我想應該只是小小的錯誤, 我想看看, 若您方便再提示如何? 謝謝 |
Analyst
一般會員 發表:0 回覆:1 積分:0 註冊:2003-09-05 發送簡訊給我 |
|
peipei36
一般會員 發表:8 回覆:51 積分:16 註冊:2002-03-13 發送簡訊給我 |
|
Fishman
尊榮會員 發表:120 回覆:1949 積分:2163 註冊:2006-10-28 發送簡訊給我 |
Hi pedro, 看來就如 peipei36 大大所言,您的 OrderDate 欄位格式是字串
你可以使用 Analyst 大大的語法即可 只要使用 Case 搭配 Cast 或 Convert 指令,將 GetDate() 與 OrderDate 轉換成可以比較的相同格式,就可以啦,至於詳細用法,看看 SQL Server 上的 Help,我也是從上面學來的 ----------------------------------
小弟才疏學淺,若有謬誤尚請不吝指教
----------------------------------
------
Fishman |
pedro
尊榮會員 發表:152 回覆:1187 積分:892 註冊:2002-06-12 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |