首页新闻找找看学习计划

varchar格式的日期,无法用于datediff函数,如何解决

0
悬赏园豆:5 [已解决问题] 解决于 2012-03-02 08:18

因为TC014是文本格式的日期,例如'20010101'

我通过下面的SQL 语句进行转换

SELECT cast(TC014 as datetime) FROM MOCTC

格式变成了'2001-01-01 00:00:00:000'  ,然后我用下面的SQL 语句求两个时间相隔的时间,

SELECT DATEDIFF(day,cast(TC014 as datetime),GETDATE())

结果提示,消息 207,级别 16,状态 3,第 1 行
列名 'TC014' 无效。,真不明白,我已经转换了,还报错

zhengyingcan的主页 zhengyingcan | 初学一级 | 园豆:12
提问于:2012-02-20 16:29
< >
分享
最佳答案
1

你现在select .... from [表],表在哪呢? 表都没有,tc014列哪里不报错

declare @itemDate datetime
SELECT @itemDate=cast(TC014 as datetime) FROM MOCTC where...
SELECT DATEDIFF(day,@itemDate,GETDATE())

收获园豆:5
--宁静以致远-- | 菜鸟二级 |园豆:364 | 2012-02-20 16:40

谢谢,我居然这样子的错误也犯.

zhengyingcan | 园豆:12 (初学一级) | 2012-02-20 18:48
其他回答(2)
1
--因为TC014是文本格式的日期,例如'20010101'

--我通过下面的SQL 语句进行转换

Create table MOCTC
(
TC014 varchar(50)
)

insert into MOCTC select '20010101'

--定义变量保存TC014
declare @TcTime datetime
SELECT @TcTime=cast(TC014 as datetime) FROM MOCTC

--格式变成了'2001-01-01 00:00:00:000' ,然后我用下面的SQL 语句求两个时间相隔的时间,

SELECT DATEDIFF(day,cast(@TcTime as datetime),GETDATE())

--结果提示,
--
4067
小材小用 | 园豆:639 (小虾三级) | 2012-02-20 17:26

谢谢,对的.

支持(0) 反对(0) zhengyingcan | 园豆:12 (初学一级) | 2012-02-20 18:48
0
--可以这样
SELECT DATEDIFF(Day,(SELECT CAST(TC014 AS DATETIME) AS TC014),GETDATE())
FROM MOCTC
loveec | 园豆:98 (初学一级) | 2012-02-21 10:33
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册