当我托盘在我的数据库中插入一些东西时,我总是会遇到这个奇怪的错误我应该工作,顺序应该也是正确的
我的查询
INSERT INTO [123].HolidayTracker.dbo.HtVacationDay
( Title,
FromDate,
UserId,
ToDate )
SELECT
old.[userNote] AS Title,
newUser.UserId,
DATEADD(HOUR, 8, old.[holidayDate]) as FromDate,
DATEADD(HOUR, 8,
DATEADD(SECOND, old.[hours] * 3600, old.[holidayDate])) as ToDate
FROM [HolidayTracker].[dbo].[UserHoliday] old
INNER JOIN
[HolidayTracker].[dbo].HTUser oldUser
ON old.htUser_htUserId = oldUser.htUserId
INNER JOIN
[ch-s-0008180].[HolidayTracker].[dbo].HtUser newUser
ON oldUser.email = newUser.email
错误消息
Msg 257,Level 16,State 3,Line 1从数据类型隐式转换 不允许使用datetime到int。使用CONVERT函数运行它 查询。
感谢您的帮助和快速回答
答案 0 :(得分:2)
INSERT INTO [123].HolidayTracker.dbo.HtVacationDay(Title,UserId,FromDate,ToDate)
....
您的插入字段为
(Title,FromDate,UserId,ToDate)
和数据
old.[userNote],
,newUser.UserId
,DATEADD....
,DATEADD....
错误是SELECT中的第3个表达式(datetime)被强制进入UserId(int)列。
但现在我得到这个新错误字符串或二进制数据将被截断。
为此,您需要缩短old.[userNote]
以匹配HtVacationDay.Title
列的最大尺寸,例如
LEFT(old.userNote, 10)
答案 1 :(得分:0)
我认为Insert语句和select语句的顺序不正确,
你应该
SELECT old。[userNote] AS Title,DATEADD(HOUR,8,old。[holidayDate])as as 从日期 ,newUser.UserId,DATEADD(HOUR,8,DATEADD(第二,旧。[小时] * 3600,旧。[holidayDate]))作为ToDate
FROM [HolidayTracker]。[dbo]。[UserHoliday] old ....
OR
您可以将插入语句更改为
INSERT INTO [123] .HolidayTracker.dbo.HtVacationDay (标题, 用户身份, 从日期, ToDate)
由于