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

如何只更改已存在日期欄位的時間而不動到日期

答題得分者是:ha0009
jerryhung
初階會員


發表:6
回覆:46
積分:30
註冊:2002-12-11

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-07-18 11:52:37 IP:202.39.xxx.xxx 未訂閱
如題 因為目前資料庫內的日期為Delphi前端的日期帶入的,所以為 2003-07-07 10:40:18.443 而前端查詢便會有問題,因為從 07/01/2003 ~ 07/07/2003 便不會包括這筆資料(因為SQL用 07/01 00:00 ~ 07/07 00:00) 那我想問是否有辦法下T-SQL語法,能只更動到時間部分而不改到日期 所以出來的日期能像這樣 2003-07-18 00:00:00.000 這樣查詢就可以查到了......... 謝謝!我網路上小找了一下只有找到 Update Time的UPDATE tabletest SET [Time] = '12:30:00 PM' 我的資料庫為SQL 2000 Delphi 5
william
版主


發表:66
回覆:2535
積分:3048
註冊:2002-07-11

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-07-18 12:29:22 IP:147.8.xxx.xxx 未訂閱
Time in SQL server is stored as fractional part if I remember correctly 
ha0009
版主


發表:16
回覆:507
積分:639
註冊:2002-03-16

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-07-18 12:37:32 IP:61.30.xxx.xxx 未訂閱
你好: SQL-2000 中將日期時間轉換為日期可使用下面的語法。  CAST(CONVERT(Char, OrderDate, 111) AS DateTime) AS NewOrderDate    我試過沒問題,你試試吧 < src="http://sourceprovide.deepen.com.tw/K_Top/bp.gif">
timhuang
尊榮會員


發表:78
回覆:1815
積分:1608
註冊:2002-07-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-07-18 13:17:58 IP:203.95.xxx.xxx 未訂閱
william 兄的方法原理上是對的, 可是 sql 不支援取資料時的轉型, 所以要自行再轉型一次就可以了.    update tabletest set afield = floor(convert(float,afield)) ha009 兄的方法是對的, 所有的轉型都是自己控制比較安全, 也比較理想. update tabletest set afield = convert(datetime, convert(varchar, afield, 111)) 這兩種方法都可以的!! 另外你也可以不要異動資料庫的資料, 直接在查詢的 command 下手, 將 select * from tabletest where afield >= '2003/7/1' and afield <= '2003/7/7' 改為 select * from tabletest where afield >= '2003/7/1' and afield <= dateadd(d, 1, '2003/7/7') 也是可行的!!
系統時間:2024-06-16 14:40:41
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!