1樓:浪漫幕末
雖然你的這個語句最終是select dateadd(d,1,'2008-12-10'),
dateadd函式裡面的第一個引數是一個標誌,它不是字元型別,應該是一個「列舉型別」。
你那條語句實際上是在執行
select dateadd('d',1,'2008-12-10'),這和上面的那個是完全不同的,都是d,但是這個d表示的含義不同。
substring('1-d',charindex('-','1-d')+1,len('1-d')-charindex('-','1-d'))出來的d是字串,dateadd會認為你引數傳遞有問題。表達能力有限,不知道你明白沒有。
2樓:匿名使用者
上面 浪漫幕末 已經說出原因了
下面是我給出的語句,能夠達到你的要求
declare @sql nchar(255)set @sql = n'select dateadd(' + substring('1-d',charindex('-','1-d')+1,len('1-d')-charindex('-','1-d')) + n',cast(substring(''1-d'',1,charindex(''-'',''1-d'')-1)as int),''2008-12-10'') '
exec sp_executesql @sql
3樓:匿名使用者
一步步將最先執行得到的中間結果轉換出來(可以在查詢分析器裡面查詢獲得),然後再一步步往外執行,最後就可以驗證是不是自己想要的結果了,
呵呵,希望能有幫助,^_^
4樓:漢天空
substring、charindex 都是資料庫函式麼,我只熟悉sql server,不好意思。
5樓:
說的好,我琢磨半天沒琢磨明白
SQL語句問題,SQL語句問題
兩種寫法 select b.b id a.id as a id a.o money a.n money as abc from a,b where b.a id a.id select b.b id a.id as a id a.o money a.n money as abc from b lef...
SQL語句的問題,SQL語句的問題
用聯接。假設資料庫名為test,列1為a,列2為b,排序欄位為id。下列語句可查出所有b列與其他行的a列相同的記錄 select t1.a,t1.b from test t1 join test t2 on t1.b t2.a where t1.a t2.a 下列語句可查出第5行是否存在b列與其他行...
SQL語句的 號的問題,SQL中取序號的問題
不可以省略,銀行帳號名稱是一個變數,也是一個字串。set sql alter table dbo.臨時表1 add 銀行帳號名稱 int default 0 其實就是執行了三個字串的相加操作,把結果賦值給 sql變數。括號是為了相容sql server裡的關鍵字,如果欄位名是關鍵字的話,某些版本的s...