[SQL ] 字串日期換算、運算

看板Database作者 (達人)時間11年前 (2014/03/15 11:51), 編輯推噓7(708)
留言15則, 4人參與, 最新討論串1/1
資料庫名稱:MSSQL 資料庫版本:2008 內容/問題描述: 各位午安,小弟想請問如何在字串的欄位上進行日期換算及運算 這是要換算的資料表 ncanni old huncal hunncb yeacal yeanbc ------------------------------------------------------------------------ 99-12-31 99-11-26 100-03-28 100-02-25 100-12-31 100-11-26 99-03-15 99-02-03 99-06-13 99-05-02 100-03-15 100-02-03 ncanni+100day old+100day ncanni+1year old+1year 上面六個欄位值都是字串 ncanni是國曆的日期(varchar) old 是農歷日期(varchar) 剩下的四個欄位是要放入ncanni跟old的運算結果 huncal,nunncb這二個欄位是要放入國曆與農曆加100天後的結果 yeacal,yeanbc這二個欄位是要放入國曆與農曆加1年後的結果 但是不知如何進行字串的運算 是否要先將字串轉回日期後進行運算再轉回字串呢? 小弟有先試過了一些方法,不過結果都不如預期的結果 有時會跳出像 將 varchar 值 '2010-12-31 00:00:00.000' 轉換成資料類型 int 時,轉換失敗。 這種的錯誤訊息 還請大大指點迷經 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 125.227.206.31

03/15 15:06, , 1F
那個錯誤訊息,就是你那串varchar不能轉int,不是int
03/15 15:06, 1F

03/15 15:06, , 2F
合法的樣子,另外就是轉成日其運算再轉回去varchar
03/15 15:06, 2F

03/15 15:07, , 3F
治本的辦法就是,把資料庫的欄位型態轉成日期格式
03/15 15:07, 3F
不能轉回去啦,99-10-23會被自動換成1999-10-23系統會自動換成西元年><

03/15 18:19, , 4F
日期存成varchar型態真的悲劇.. 換來換去很麻煩
03/15 18:19, 4F
可以的話我真的很想直接用日期 ORZ

03/15 20:13, , 5F
最近做新的系統也有遇到日期的問題,不過我們沒有農曆
03/15 20:13, 5F

03/15 20:13, , 6F
主要是舊系統是顯示民國年,所以就是在要存回資料庫
03/15 20:13, 6F

03/15 20:15, , 7F
和取出顯示的時候要去做轉換
03/15 20:15, 7F

03/15 20:15, , 8F
你用VARCHAR去存問題會更多,大小月、閏年等等
03/15 20:15, 8F
主要是資料存入後基本上就不會在改了,主要是卡在運算上(?o?)

03/15 21:45, , 9F
那就是轉成日期型態去加減天數再轉回來阿
03/15 21:45, 9F

03/15 21:48, , 10F
GOOGLE一下 SQL字串轉日期
03/15 21:48, 10F

03/16 00:48, , 11F
先截取字串組合成可辨識的日期 再convert成datetime
03/16 00:48, 11F
有試過用convert(datetime,date(),50),但是會跳出日期轉換的錯誤( ̄□ ̄|||)a

03/18 20:53, , 12F
搜尋 convert SQL 有很多時間格式可以轉
03/18 20:53, 12F
用了別人分享的格式來轉,全都不行,都是跳出轉換異常的警告

03/20 00:16, , 13F
有先用right left擷取出年月日? 民國還要+1911轉成西元
03/20 00:16, 13F
right left這我沒使用過 民國要先+1911!!我去試看看,感謝 ※ 編輯: MagicPaul 來自: 125.227.206.31 (03/20 12:39)

03/21 19:06, , 14F
先replace掉-變成數字加上19110000
03/21 19:06, 14F

03/21 19:06, , 15F
再去作日期的轉換就可以了
03/21 19:06, 15F
文章代碼(AID): #1J8yvRuC (Database)