从字符串转换为 datetime 时发生语法错误

ymli 2003-11-28 10:43:42
declare @开始时间 datetime
declare @str varchar(100)

SET @开始时间='2000-05-08 12:35:29.998'

SET @str='INSERT INTO TABLE1 (@开始时间)
VALUES ('''+@开始时间+''')'

PRINT(@str)
-------------------------------
以上语句在查询分析器中执行报错:从字符串转换为 datetime 时发生语法错误。
请教如何解决?
...全文
113 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjcxc 元老 2003-11-28
  • 打赏
  • 举报
回复
--或:
declare @开始时间 datetime
declare @str varchar(100)

SET @开始时间='2000-05-08 12:35:29.998'

--字段名是:开始时间吧?,你怎么也加上@
SET @str='INSERT INTO TABLE1 (开始时间)
VALUES ('''+convert(varchar,@开始时间,121) --不过好像不太好使
+''')'

zjcxc 元老 2003-11-28
  • 打赏
  • 举报
回复
--那就这个
declare @开始时间 varchar(24)
declare @str varchar(100)

SET @开始时间='2000-05-08 12:35:29.998'

SET @str='INSERT INTO TABLE1 (开始时间)
VALUES ('''+@开始时间+''')'
ymli 2003-11-28
  • 打赏
  • 举报
回复
呵呵,谢谢两位。
不过txlicenhe(马可)的做法好像有些问题,执行结果是
INSERT INTO TABLE1 (开始时间)
VALUES ('+@开始时间+')
并非我的原意。

zjcxc(邹建)的执行结果是
INSERT INTO TABLE1 (开始时间)
VALUES ('05 8 2000 12:35PM')
可以满足我的要求。

但更进一步的问题是,想保持declare @开始时间 datetime,
且在VALUES中保留毫秒值,即想得到如下执行结果:
INSERT INTO TABLE1 (开始时间)
VALUES ('2000-05-08 12:35:29.998')
做得到吗?
zjcxc 元老 2003-11-28
  • 打赏
  • 举报
回复
--第一个有点问题
declare @开始时间 datetime
declare @str varchar(100)

SET @开始时间='2000-05-08 12:35:29.998'

--字段名是:开始时间吧?,你怎么也加上@
SET @str='INSERT INTO TABLE1 (开始时间)
VALUES ('''+cast(@开始时间 as varchar)+''')'
txlicenhe 2003-11-28
  • 打赏
  • 举报
回复
将三个一起的单引号改成两个即可
zjcxc 元老 2003-11-28
  • 打赏
  • 举报
回复
--或:
declare @开始时间 varchar(24)
declare @str varchar(100)

SET @开始时间='2000-05-08 12:35:29.998'

SET @str='INSERT INTO TABLE1 (开始时间)
VALUES ('''+@开始时间+''')'
txlicenhe 2003-11-28
  • 打赏
  • 举报
回复
declare @开始时间 datetime
declare @str varchar(100)

SET @开始时间='2000-05-08 12:35:29.998'

SET @str='INSERT INTO TABLE1 (@开始时间)
VALUES (''+@开始时间+'')'

PRINT(@str)


zjcxc 元老 2003-11-28
  • 打赏
  • 举报
回复
declare @开始时间 datetime
declare @str varchar(100)

SET @开始时间='2000-05-08 12:35:29.998'

SET @str='INSERT INTO TABLE1 (@开始时间)
VALUES ('''+cast(@开始时间 as varchar)+''')'
wjnjine 2003-11-28
  • 打赏
  • 举报
回复
create table dt(datetm datetime)

declare @开始时间 datetime
SET @开始时间='2000-05-08 12:35:29.998'

INSERT INTO dt VALUES (@开始时间)
select * from dt
drop dt
select 1 from sysobjects where type='U' and name='dt'

给点分偶提别的问题否?

34,874

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧