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

戈壁上的月光 2008-12-17 03:43:09
[code=SQL]select * from business where b_startdate>=convert(datetime,'" & Format(DATEADD(day,-1,GETDATE()), "yyyy-MM-dd 00:00:00") & "',121)code]
这句出现从字符串转换为 datetime 时发生语法错误。该怎么改?
...全文
174 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
特别 2008-12-18
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 harvest2006 的回复:]
现在我用  b_startdate>=2008-12-17 and b_startdate <=2008-12-18 来查询17号一天的记录,因为我的数据里b_startdate=2008-12-17 12:12:12
这样的格式!不知道行不行,会不会存在误差?
[/Quote]
这种问题SQL里一试不就知道了
特别 2008-12-18
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 harvest2006 的回复:]
现在我用  b_startdate>=2008-12-17 and b_startdate <=2008-12-18 来查询17号一天的记录,因为我的数据里b_startdate=2008-12-17 12:12:12
这样的格式!不知道行不行,会不会存在误差?
[/Quote]
不会有影响的
戈壁上的月光 2008-12-18
  • 打赏
  • 举报
回复
现在我用 b_startdate>=2008-12-17 and b_startdate<=2008-12-18 来查询17号一天的记录,因为我的数据里b_startdate=2008-12-17 12:12:12
这样的格式!不知道行不行,会不会存在误差?
特别 2008-12-17
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 harvest2006 的回复:]
另外还要有个b_enddate <=‘2008-12-15 23:59:00’的值要凑出来!
[/Quote]


select convert(datetime,datename(year,dateadd(day,-1,getdate()))+'-'+datename(month,dateadd(day,-1,getdate()))+'-'+datename(day,dateadd(day,-1,getdate()))+' 23:59:00',121)

ooily 2008-12-17
  • 打赏
  • 举报
回复
up
戈壁上的月光 2008-12-17
  • 打赏
  • 举报
回复
另外还要有个b_enddate<=‘2008-12-15 23:59:00’的值要凑出来!
戈壁上的月光 2008-12-17
  • 打赏
  • 举报
回复

convert(datetime,datename(year,dateadd(day,-1,getdate()))+'-'+datename(month,dateadd(day,-1,getdate()))+'-'+datename(day,dateadd(day,-1,getdate())),121)
这个的结果是什么,格式如何?
特别 2008-12-17
  • 打赏
  • 举报
回复

/*
纯SQL语法
楼主希望时间是 00:00:00 ,不加时间部分默认就是该值
*/
select * from business where b_startdate>=convert(datetime,datename(year,dateadd(day,-1,getdate()))+'-'+datename(month,dateadd(day,-1,getdate()))+'-'+datename(day,dateadd(day,-1,getdate())),121)
戈壁上的月光 2008-12-17
  • 打赏
  • 举报
回复
谢楼上!
我是要在存储过程里面写也就是要SQL语句!
特别 2008-12-17
  • 打赏
  • 举报
回复
你可能用的是VB访问SQL的,关键问题出现在
Format(DATEADD(day,-1,GETDATE()), "yyyy-MM-dd 00:00:00")
其中DATEADD的用法是SQL的用法,GETDATE()是SQL的函数,而Format是VB的函数
改成下面的试试

"select * from business where b_startdate>=convert(datetime,'" & Format(DateAdd("d", -2, Now()), "yyyy-MM-dd 00:00:00") & "',121)"


特别 2008-12-17
  • 打赏
  • 举报
回复
[Quote=引用楼主 harvest2006 的帖子:]
select * from business where b_startdate>=convert(datetime,'" & Format(DATEADD(day,-1,GETDATE()), "yyyy-MM-dd 00:00:00") & "',121)code]
这句出现从字符串转换为 datetime 时发生语法错误。该怎么改?
[/Quote]
你可能用的是VB访问SQL的,关键问题出现在
Format(DATEADD(day,-1,GETDATE()), "yyyy-MM-dd 00:00:00")
其中DATEADD的用法是SQL的用法,GETDATE()是SQL的函数,而Format是VB的函数
改成下面的试试
[code=VB]
"select * from business where b_startdate>=convert(datetime,'" & Format(DateAdd("d", -2, Now()), "yyyy-MM-dd 00:00:00") & "',121)"
nj_link 2008-12-17
  • 打赏
  • 举报
回复
to_char(DATE,'yyyy-mm-dd');
戈壁上的月光 2008-12-17
  • 打赏
  • 举报
回复
而且有两个时间来过滤b_startdate 、b_enddate
戈壁上的月光 2008-12-17
  • 打赏
  • 举报
回复
就是要SQL语句,如果这样写的话 误差是不是太大了 我想精确到秒!
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 dawugui 的回复:]
select * from business where b_startdate >= DATEADD(day,-1,GETDATE())
[/Quote]这个是sql的语法,你再改成相对应的编程语言的格式
水族杰纶 2008-12-17
  • 打赏
  • 举报
回复
--TRY
select * from business where b_startdate>=convert(datetime,'" & Format(DATEADD(day,-1,GETDATE()), "yyyy-MM-dd 00:00:00") & "',121)
AND isdate('" & Format(DATEADD(day,-1,GETDATE()), "yyyy-MM-dd 00:00:00") & "')=1
戈壁上的月光 2008-12-17
  • 打赏
  • 举报
回复
先谢两位,不过两种写法都不行!
dawugui 2008-12-17
  • 打赏
  • 举报
回复
select * from business where b_startdate >= DATEADD(day,-1,GETDATE())
水族杰纶 2008-12-17
  • 打赏
  • 举报
回复
select * from business where b_startdate>=convert(datetime,'" & Format(DATEADD(day,-1,GETDATE()), "yyyy-MM-dd 00:00:00") & "',121)
where isdate('" & Format(DATEADD(day,-1,GETDATE()), "yyyy-MM-dd 00:00:00") & "')=1
dawugui 2008-12-17
  • 打赏
  • 举报
回复
select * from business where b_startdate>=convert(varchar(10),'" & Format(DATEADD(day,-1,GETDATE()), "yyyy-MM-dd 00:00:00") & "',120)
加载更多回复(1)

34,873

社区成员

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

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