关于时间数据处理的问题

dgz988 2007-12-28 03:08:40
各位老大请帮忙:
在数据库内有一列数据: abc070805
前面三位是随机,后面是日期数据,这样我可以用SUBSTRING取出日期数据070805,我想在它的基础上推算两年后的日期,可否用SQL来实现啊?

即用语句实现出来的结果是:090805

谢谢了。
...全文
74 11 打赏 收藏 举报
写回复
11 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
dgz988 2007-12-28
明白。谢谢老大。嘿嘿。。
  • 打赏
  • 举报
回复
popeye627 2007-12-28
Select substring(CONVERT(varchar(30),dateadd(year,2,cast(right('abc070805',6)as datetime)),112),3,6) result

result
------------
090805

(1 個資料列受到影響)

---dateadd的第二个参数2,表2年
  • 打赏
  • 举报
回复
popeye627 2007-12-28
Select substring(CONVERT(varchar(30),dateadd(year,2,cast(right('abc070805',6)as datetime)),112),3,6) result

result
------------
090805

(1 個資料列受到影響)

---dateadd的第二个参数2,表2年
  • 打赏
  • 举报
回复
popeye627 2007-12-28
不好意思,写成Oracle的了,呵呵 LZ还是参照乌龟的吧
  • 打赏
  • 举报
回复
dgz988 2007-12-28
感动中。。一个贴子这么多兄弟观注。
非常感谢!!!我试一下。
  • 打赏
  • 举报
回复
popeye627 2007-12-28
select to_char(ADD_MONTHS(to_date(substr('abc070805',4,6),'yymmdd'),24),'yymmdd') from dual
---24:2年24个月

---------查询结果-------------
1 090805
  • 打赏
  • 举报
回复
popeye627 2007-12-28
select to_char(ADD_MONTHS(to_date(substr('abc070805',4,6),'yymmdd'),24),'yymmdd') from dual
  • 打赏
  • 举报
回复
dawugui 2007-12-28
declare @s as varchar(20)
set @s = 'abc070805'

select result =
right(datename(year,(dateadd(year,2,cast(right(@s,6) as datetime)))),2)
+ right('00'+datename(mm,(dateadd(year,2,cast(right(@s,6) as datetime)))),2)
+ right('00'+datename(day,(dateadd(year,2,cast(right(@s,6) as datetime)))),2)

/*
result
--------------------------------------------------------------------
090805

(1 行受影响)
*/

  • 打赏
  • 举报
回复
dawugui 2007-12-28
declare @s as varchar(20)
set @s = 'abc070805'

select result = left(@s,3) +
right(datename(year,(dateadd(year,2,cast(right(@s,6) as datetime)))),2)
+ right('00'+datename(mm,(dateadd(year,2,cast(right(@s,6) as datetime)))),2)
+ right('00'+datename(day,(dateadd(year,2,cast(right(@s,6) as datetime)))),2)

/*
result
--------------------------------------------------------------------
abc090805

(1 行受影响)
*/

  • 打赏
  • 举报
回复
dawugui 2007-12-28
declare @s as varchar(20)
set @s = 'abc070805'

select result = left(@s,3) +
right(datename(year,(dateadd(year,2,cast(right(@s,6) as datetime)))),2)
+ right('00'+datename(mm,(dateadd(year,2,cast(right(@s,6) as datetime)))),2)
+ right('00'+datename(day,(dateadd(year,2,cast(right(@s,6) as datetime)))),2)

/*
result
--------------------------------------------------------------------
abc09085

(1 行受影响)
*/
  • 打赏
  • 举报
回复
dawugui 2007-12-28
declare @s as varchar(20)
set @s = 'abc070805'

select result = left(@s,3) +
right(datename(year,(dateadd(year,2,cast(right(@s,6) as datetime)))),2)
+ datename(mm,(dateadd(year,2,cast(right(@s,6) as datetime))))
+ datename(day,(dateadd(year,2,cast(right(@s,6) as datetime))))

/*
result
--------------------------------------------------------------------
abc09085

(1 行受影响)
*/

  • 打赏
  • 举报
回复
发帖
MS-SQL Server

3.4w+

社区成员

MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
帖子事件
创建了帖子
2007-12-28 03:08
社区公告
暂无公告