看板 Database 關於我們 聯絡資訊
資料庫名稱: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
GoalBased:那個錯誤訊息,就是你那串varchar不能轉int,不是int 03/15 15:06
GoalBased:合法的樣子,另外就是轉成日其運算再轉回去varchar 03/15 15:06
GoalBased:治本的辦法就是,把資料庫的欄位型態轉成日期格式 03/15 15:07
不能轉回去啦,99-10-23會被自動換成1999-10-23系統會自動換成西元年><
moyasi:日期存成varchar型態真的悲劇.. 換來換去很麻煩 03/15 18:19
可以的話我真的很想直接用日期 ORZ
GoalBased:最近做新的系統也有遇到日期的問題,不過我們沒有農曆 03/15 20:13
GoalBased:主要是舊系統是顯示民國年,所以就是在要存回資料庫 03/15 20:13
GoalBased:和取出顯示的時候要去做轉換 03/15 20:15
GoalBased:你用VARCHAR去存問題會更多,大小月、閏年等等 03/15 20:15
主要是資料存入後基本上就不會在改了,主要是卡在運算上(?o?)
GoalBased:那就是轉成日期型態去加減天數再轉回來阿 03/15 21:45
GoalBased:GOOGLE一下 SQL字串轉日期 03/15 21:48
sleepwu:先截取字串組合成可辨識的日期 再convert成datetime 03/16 00:48
有試過用convert(datetime,date(),50),但是會跳出日期轉換的錯誤( ̄□ ̄|||)a
sleepwu:搜尋 convert SQL 有很多時間格式可以轉 03/18 20:53
用了別人分享的格式來轉,全都不行,都是跳出轉換異常的警告
sleepwu:有先用right left擷取出年月日? 民國還要+1911轉成西元 03/20 00:16
right left這我沒使用過 民國要先+1911!!我去試看看,感謝 ※ 編輯: MagicPaul 來自: 125.227.206.31 (03/20 12:39)
Ammenze:先replace掉-變成數字加上19110000 03/21 19:06
Ammenze:再去作日期的轉換就可以了 03/21 19:06