nvarchar转换为date类型后,对下面view中的日期查询出错

ChinaITOldMan 2019-07-25 12:25:26
表t1中的f1为nvarchar, 该字段f1里面存储有字符或日期类型的数据, 现在我通过条件过滤出只有日期格式的数据,通过vwDate1过滤出f1中只有日期格式的数据, 若执行 select * from vwDate1 (vwDate1为下面的视图) 执行成功,查询出来的数据是日期类型的, 但是若用select * from vwDate1 where f1>'2019-5-1' 就显示 Conversion failed when converting date and/or time from character string.

若 select * into #tt1 from vwDate1 再执行select * from #tt1 where f1>'2019-5-1' 执行成功。
请问通过view进行转换的方式,是否有办法直接执行 select * from vwDate1 where f1>'2019-5-1' 不会出错,也就是我不想通过生成临时表而直接查询View的方式进行查询。



CREATE VIEW vwDate1
AS
select convert(DATE, f1 ) AS f1, f2, f3 from t1
where f3='date'

谢谢!
...全文
209 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
ChinaITOldMan 2019-07-27
  • 打赏
  • 举报
回复
还是没解决,不过还是谢谢大家!
卖水果的net 2019-07-25
  • 打赏
  • 举报
回复
-- 把视图改成,也就早去掉查询条件。
 CREATE VIEW vwDate1
 AS
 select  convert(DATE, f1 ) AS f1, f2, f3  from t1
go
-- 看看这个,会不会报错。
select * into #tt1 from vwDate1
go
ChinaITOldMan 2019-07-25
  • 打赏
  • 举报
回复
引用 7 楼 二月十六 的回复:
[quote=引用 6 楼 mcxhh2005 的回复:] 那个字段有日期格式也有不是日期格式的,但是我where f3='date' 过滤出来的是日期格式的,若把过滤出来的记录放到临时表中(用convert 函数把f2转化为date) 完全是兼容日期数据的,但是不用临时表就出错,不知道是哪里有问题,谢谢!
给一些测试数据方便吗[/quote] 不知道怎样给若我从表中查询一部分出来生成到一个表中,再按日期格式查询是没有问题的所以不知道怎样给比较好,谢谢您
二月十六 2019-07-25
  • 打赏
  • 举报
回复
引用 6 楼 mcxhh2005 的回复:
那个字段有日期格式也有不是日期格式的,但是我where f3='date' 过滤出来的是日期格式的,若把过滤出来的记录放到临时表中(用convert 函数把f2转化为date) 完全是兼容日期数据的,但是不用临时表就出错,不知道是哪里有问题,谢谢!
给一些测试数据方便吗
ChinaITOldMan 2019-07-25
  • 打赏
  • 举报
回复
那个字段有日期格式也有不是日期格式的,但是我where f3='date' 过滤出来的是日期格式的,若把过滤出来的记录放到临时表中(用convert 函数把f2转化为date) 完全是兼容日期数据的,但是不用临时表就出错,不知道是哪里有问题,谢谢!
二月十六 2019-07-25
  • 打赏
  • 举报
回复
是不是有不是日期格式的啊?挺奇怪这问题
ChinaITOldMan 2019-07-25
  • 打赏
  • 举报
回复
引用 2 楼 二月十六 的回复:
 CREATE VIEW vwDate1
 AS
 SELECT * FROM (
 select  convert(DATE, f1 ) AS f1, f2, f3  from t1
 where f3='date')t
一样的错误,谢谢
ChinaITOldMan 2019-07-25
  • 打赏
  • 举报
回复
引用 2 楼 二月十六 的回复:
 CREATE VIEW vwDate1
 AS
 SELECT * FROM (
 select  convert(DATE, f1 ) AS f1, f2, f3  from t1
 where f3='date')t
这样一样提示错误的,谢谢!
二月十六 2019-07-25
  • 打赏
  • 举报
回复
 CREATE VIEW vwDate1
 AS
 SELECT * FROM (
 select  convert(DATE, f1 ) AS f1, f2, f3  from t1
 where f3='date')t

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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