社区
MS-SQL Server
帖子详情
怎样用x年x天表示时间间隔?
richardxulf
2003-09-10 03:44:44
我知道有一个函数DateDiff来算出指定的日期的间隔,但是算出来的要么就是多少年,或者多少月,多少天等等。我相知道怎么得出用x年x天表达的时间间隔,谢谢
...全文
27
8
打赏
收藏
怎样用x年x天表示时间间隔?
我知道有一个函数DateDiff来算出指定的日期的间隔,但是算出来的要么就是多少年,或者多少月,多少天等等。我相知道怎么得出用x年x天表达的时间间隔,谢谢
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
yushiro
2003-09-10
打赏
举报
回复
用datediff
welyngj
2003-09-10
打赏
举报
回复
datepart(year,@d2-@d1)+'年'+datepart(dayofyear,@d2-@1)+'天'
有语法错误。不信运行一下。
w_rose
2003-09-10
打赏
举报
回复
不需要datediff函数。
datepart(year,@d2-@d1)+'年'+datepart(dayofyear,@d2-@1)+'天'
tttt415
2003-09-10
打赏
举报
回复
标准的时间间隔类型是不能表示x年x日的。根据sql92的数据类型定义,interval类型只能是一下一种:year、year-month、month、day、day-hour、...second。也就是说,month和day是一个分水岭,month以及month以上的精度不能和day或day以下的精度同时出现。
这个东西的原理可以简单的像下面这样理解:
在数据库中,间隔类型作为一种数值类型。他的特点与其他数值有很多、相似的地方,例如可以进行加、减法,例如1天+1天=2天。有进位的概念,例如12月=1年、24小时=1天。可以和普通的数值类型进行乘、除法,例如1天*2=2天。
而你所要求的x年x日的这种类型,将不可能作为一种数值类型存在,例如1年1日+1年1日=?,1年1日*2=?。由于存在闰年的问题,所以这种新的类型将无法进行运算。
当然,你也可以采用自己定义的算法来计算两个时间的间隔是x年x日。不过一定要记住:这种表示不是标准的,不应该叫“间隔”(不能和大家都公认的叫法混淆)。而且,除非你写明算法,否则别人无法理解你的x年x日到底表示什么。
其实myflok(阿棋) 的思路就很好,可以充分体现x年x日在实际生活中的含义,例如22年-81天表示距离22岁生日还差81天,如果得到的结果是22年81天,那末就表示已经过了22岁生日81天。总之x年x日用来表示与一个特定含义日期的距离很好。
zjcxc
元老
2003-09-10
打赏
举报
回复
declare @d1 datetime,@d2 datetime
select @d1='2001-2-01'
,@d2='2003-12-31'
select cast(datediff(year,@d1,@d2) as varchar)+'年'
+cast(datediff(day,dateadd(year,datediff(year,@d1,@d2),@d1),@d2) as varchar)+'天'
keekeep
2003-09-10
打赏
举报
回复
to:myflok(阿棋)
我用你的公式算出了22年-81天的结果(用我的生日)...
dafu71
2003-09-10
打赏
举报
回复
修正
select cast(datediff(yy,'2002-08-10',left(convert(varchar(10),getdate(),120),4)+right('2002-08-10',6))as varchar(10)) + '年' + cast(datediff(dd,left(convert(varchar(10),getdate(),120),4)+right('2003-08-10',6),getdate())as varchar(10)) + '天'
----------1年31天
select cast(datediff(yy,YOURDATE,left(convert(varchar(10),getdate(),120),4)+right(YOURDATE,6))as varchar(10)) + '年' + cast(datediff(dd,left(convert(varchar(10),getdate(),120),4)+right(YOURDATE,6),getdate())as varchar(10)) + '天'
dafu71
2003-09-10
打赏
举报
回复
select cast(datediff(yy,'2002-9-10',getdate())as varchar(10)) + '年' + cast(datediff(dd,left(convert(varchar(10),getdate(),120),4)+'-01-01',getdate())as varchar(10)) + '天'
----------1年252天
select cast(datediff(yy,YOURDATE,getdate())as varchar(10)) + '年' + cast(datediff(dd,left(convert(varchar(10),getdate(),120),4)+'-01-01',getdate())as varchar(10)) + '天'
C#中以时间作为chart的X坐标轴间隔
C#中以时间作为chart的X坐标轴间隔,波形图chart的X轴坐标为时间(ms),
angular-input-interval:基于PEGjs的输入间隔。 您可以在时间值“ X”之后指定一个时间单位,例如Xw,Xd,Xh,Xm或Xs,以
表示
周(w),
天
(d),小时(h),分钟(m)和秒( s)。 间隔将在控制器的$ scope中以毫秒为单位
您可以在时间值“ X”之后指定一个时间单位,例如Xw,Xd,Xh,Xm或Xs,以
表示
周(w),
天
(d),小时(h),分钟(m)和秒( s)。
时间间隔
将在控制器的$ scope中以毫秒为单位。 该组件的灵感来自JIRA输入间隔组件...
Linux系统编程第08期:时间管理和定时器编程
本期课程是《Linux系统编程》第08期,主要讲解在Linux下时间管理的基本概念、时间的获取和设置、定时器编程,包括简单的闹钟alarm、间隔定时器interval timer、POSIX timer编程。
tcsp:时间约束满足问题
TSCP是一个约束满足问题,其中变量代表时间点,时间信息由一元和二进制约束集
表示
。 我们将TCSP与图相关联,包括: 一组具有连续域的变量X_1 to X_n 一组约束,每个约束由一组间隔
表示
一元约束T_i将变量X_i的域...
Java
时间间隔
格式化
* 将
时间间隔
的秒值转换成X
天
X时X分X秒,这里使用到的是递归的方法。 * @param dateTime 秒值 * return 格式化时间 X
天
X时X分X秒 **/ private static String durationConvert(Long dateTime){ if(dateTime > 60)...
MS-SQL Server
34,587
社区成员
254,588
社区内容
发帖
与我相关
我的任务
MS-SQL Server
MS-SQL Server相关内容讨论专区
复制链接
扫一扫
分享
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章