请教一个sql语句,高手请进!!!!!

flyelfsky 2003-09-24 09:41:00
在我的一个表中有一个nvarchar的子段,表示时间
create table test
(
dt nvarchar(20) not null
)
我想从该表中检索出三天以前的记录,并且把该子段转换为datetime类型的数据,
我该如何写呢?
...全文
49 18 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
penfe 2003-09-24
  • 打赏
  • 举报
回复
已阅。
wfwater 2003-09-24
  • 打赏
  • 举报
回复
学习
愉快的登山者 2003-09-24
  • 打赏
  • 举报
回复
select * from test where isdate(dt) = 1 and datediff(day, cast(dt as datetime), getdate()) >= 3

select cast(dt as datetime) from test where isdate(dt) = 1

zjcxc 元老 2003-09-24
  • 打赏
  • 举报
回复
你的表中,具有不规范的数据,不能转换成日期型,改一下:

select convert(datetime,dt) from test where case when isdate(dt)=1 then datediff(day,dt,getdate()) else 0 end>3
flyelfsky 2003-09-24
  • 打赏
  • 举报
回复
我的数据格式是这么定义的:'2003-09-24 12:23:43'
yujohny 2003-09-24
  • 打赏
  • 举报
回复
你的数据格式是什么样的,是不是不符合"2003-03-21"或“20030321”这两种格式呢?
zjcxc 元老 2003-09-24
  • 打赏
  • 举报
回复
你的表中,具有不规范的数据,不能转换成日期型,改一下:

select convert(datetime,dt) from test where case when isdate(dt)=1 then datediff(day,dt,getdate()) else 0)>3
愉快的登山者 2003-09-24
  • 打赏
  • 举报
回复
将你的数据格式具体帖出来,20位是如何定义的。
flyelfsky 2003-09-24
  • 打赏
  • 举报
回复
另外请各位兄弟帮忙一下这个贴子
http://expert.csdn.net/Expert/topic/2269/2269995.xml?temp=.1662866
flyelfsky 2003-09-24
  • 打赏
  • 举报
回复
我用了各位兄弟的语句,但是查询分析器返回错误说:
将 expression 转换为数据类型 datetime 时发生算术溢出错误。
这是为什么呢?
pengdali 2003-09-24
  • 打赏
  • 举报
回复
当你与时间类型比较的时候sqlserver会自己隐式转化。
txlicenhe 2003-09-24
  • 打赏
  • 举报
回复
1:
select * from 表 where datediff(day,dt,getdate())>3
2:
alter table 表 alter column dt datetime
zjcxc 元老 2003-09-24
  • 打赏
  • 举报
回复
select convert(datetime,dt) from test where datediff(day,dt,getdate())>3
zjcxc 元老 2003-09-24
  • 打赏
  • 举报
回复
select convert(datetime,dt) from test where datediff(day,dt,getdate())>3
愉快的登山者 2003-09-24
  • 打赏
  • 举报
回复
select * from test where datediff(day, cast(dt as datetime), getdate()) >= 3

select cast(dt as datetime) from test
pengdali 2003-09-24
  • 打赏
  • 举报
回复
select * from test where datediff(day,dt,getdate())=3
yujohny 2003-09-24
  • 打赏
  • 举报
回复
检索出三天以前的记录
select * from 表 where datediff(dd,convert(datetime,dt),getdate())>3
子段转换为datetime类型的数据,
alter table 表 alter column dt datetime

flyelfsky 2003-09-24
  • 打赏
  • 举报
回复
经过仔细检查,终于发现原来我的记录中有一个记录不符合
谢谢各位

34,837

社区成员

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

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