全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1017
推到 Plurk!
推到 Facebook!

delphi中整个栏位的计算

答題得分者是:pillar62
luowy651
高階會員


發表:257
回覆:313
積分:114
註冊:2003-04-09

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-03-17 10:12:45 IP:220.184.xxx.xxx 未訂閱
各位选进大大,不好意思,小弟又有事麻烦大家了 比如我有一sql的table,其中field1和field2的内容是类似“2005-02-01”,char型,现在我想将field1-field2以获得field3“天数”,我找遍了sql中的函数,好象没有这方面的功能,但在delphi中倒有这样的函数,我使用了如下方法: adotable1.Active:=true; adotable1.Edit; ADOTable1.FieldByName('field3').asstring:=inttostr(Trunc(StrToDate('field1'))-Trunc(StrToDate('field2'))); adotable1.updatebatch; 但它只对第一条记录有效,如果遍历所有记录,速度会下降。 我想问一下,怎样才能让它对整个栏位有效? 不胜感激!
pillar62
資深會員


發表:9
回覆:324
積分:271
註冊:2002-04-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-03-17 10:33:28 IP:210.64.xxx.xxx 未訂閱
你好 可以搭配 cast 以及 datediff兩個 sql的函數處理!!例如 select DATEDIFF(dd, cast('field2' as datetime), cast('field1' as datetime)) as field3 from table 試試看喔!! Pillar Wang
------
Pillar Wang
luowy651
高階會員


發表:257
回覆:313
積分:114
註冊:2003-04-09

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-03-17 10:56:38 IP:220.184.xxx.xxx 未訂閱
引言: 你好 可以搭配 cast 以及 datediff兩個 sql的函數處理!!例如 select DATEDIFF(dd, cast('field2' as datetime), cast('field1' as datetime)) as field3 from table 試試看喔!! Pillar Wang
谢谢pillar Wang大大,可是我在用时出现“从字符串转换为datetime时发生语法错误”,不知是何原因?
pillar62
資深會員


發表:9
回覆:324
積分:271
註冊:2002-04-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-03-17 11:04:26 IP:210.64.xxx.xxx 未訂閱
你好,不用客氣 你的欄位裡面是不是有格式有問題的資料,因為你現在的格式是2005-02-01但是只要那個欄位其中有一筆資料有問題格式不對就會有這樣個錯誤訊息,所以建議你,先在where條件裡面把可能錯誤的資料去掉!!例如where len(field1) = 10 and len(field2) = 10 and field1 is not null and feild2 is not null...試試看吧!! Pillar Wang
------
Pillar Wang
luowy651
高階會員


發表:257
回覆:313
積分:114
註冊:2003-04-09

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-03-17 11:30:28 IP:220.184.xxx.xxx 未訂閱
引言: 你好,不用客氣 你的欄位裡面是不是有格式有問題的資料,因為你現在的格式是2005-02-01但是只要那個欄位其中有一筆資料有問題格式不對就會有這樣個錯誤訊息,所以建議你,先在where條件裡面把可能錯誤的資料去掉!!例如where len(field1) = 10 and len(field2) = 10 and field1 is not null and feild2 is not null...試試看吧!! Pillar Wang
我把我的table中只留一条记录,其它记录全部删除,不管是否加where都出现下图,如下图 但还是出现这个问题。
pillar62
資深會員


發表:9
回覆:324
積分:271
註冊:2002-04-15

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-03-17 11:43:04 IP:210.64.xxx.xxx 未訂閱
你好 請問一下你的資料庫應該是mssql沒錯吧!!因為這個sql語法是在mssql測試的!!嗯,有一個地方要注意!!就是select DATEDIFF(dd, cast('field2' as datetime), cast('field1' as datetime)) as field3 from table 裡面的'field2'或是'field1'都沒有加單引號喔!! select DATEDIFF(dd, cast(field2 as datetime), cast(field1 as datetime)) as field3 Pillar Wang
------
Pillar Wang
luowy651
高階會員


發表:257
回覆:313
積分:114
註冊:2003-04-09

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-03-17 12:31:07 IP:220.184.xxx.xxx 未訂閱
引言: 你好 請問一下你的資料庫應該是mssql沒錯吧!!因為這個sql語法是在mssql測試的!!嗯,有一個地方要注意!!就是select DATEDIFF(dd, cast('field2' as datetime), cast('field1' as datetime)) as field3 from table 裡面的'field2'或是'field1'都沒有加單引號喔!! select DATEDIFF(dd, cast(field2 as datetime), cast(field1 as datetime)) as field3 Pillar Wang
再谢pillar Wang大大,果然有效! 能否再问一下,如果我不是field2-field1,而只是将field1栏位都 5天,该怎么做?小弟初学,不好意思! 發表人 - luowy651 於 2005/03/17 12:51:42
系統時間:2024-06-29 23:27:36
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!