SQL中年月日类型的日期怎么转成天数
RTsql中 比如现在给的时间是1年2月3天 怎么转换成428天。
------解决方案-------------------- 分平年闰年不?
------解决方案--------------------
select floor(365*(1+2./12))+3
------解决方案--------------------
declare @x varchar(100)
select @x='1年2月3天'
select cast(substring(@x,1,charindex('年',@x,1)-1) as int)*365
+cast(substring(@x,charindex('年',@x,1)+1,charindex('月',@x,1)-charindex('年',@x,1)-1) as int)*30
+cast(substring(@x,charindex('月',@x,1)+1,charindex('天',@x,1)-charindex('月',@x,1)-1) as int) '天数'
/*
天数
-----------
428
(1 row(s) affected)
*/
------解决方案-------------------- DECLARE @s VARCHAR(100)
SET @s='1年2月3天'
SELECT
SUBSTRING(@s,1,CHARINDEX('年',@s)-1)*365+
SUBSTRING(@s,CHARINDEX('年',@s)+1,CHARINDEX('月',@s)-1-CHARINDEX('年',@s))*30+
SUBSTRING(@s,CHARINDEX('月',@s)+1,CHARINDEX('天',@s)-1-CHARINDEX('月',@s))
/*-----------
428
(1 行受影响)*/ ------解决方案-------------------- SELECT DATEDIFF(d,'0001-01-01','0001-02-03') ------解决方案-------------------- 那个2月是只随机的两个月还是指2月份?我觉得如果是随机的,那么这个转换没什么意义
------解决方案-------------------- 看你计算的结果,年不分平、闰年,月也不分30、31天
select 1*365+2*30+3?
------解决方案-------------------- select convert(int,convert(datetime,'1901-02-03')) + 1
------解决方案-------------------- 引用: 看你计算的结果,年不分平、闰年,月也不分30、31天
select 1*365+2*30+3?
这个好, 最直接!
------解决方案-------------------- 这个设定确实有问题,因为即使不分平润年,月份也是要分的,28天,30天还是31天。
所以之中转化本身没有多大的意义,或者楼主可以把自己的问题再说清楚一些。
------解决方案-------------------- 楼主的转换太奇葩了,还是想想到底要干嘛,datediff 还不能满足楼主吗?
------解决方案-------------------- select Datediff(d,getdate(),(select Dateadd(d,日,(select Dateadd(mm,月,(select Dateadd(yy,年,getdate())))))))
------解决方案-------------------- 昨天有一同事问:怎么获取指定年份的一月份的第一天。
比如2013年的第一天怎么获取,
------解决方案-------------------- 应该可以写一个比较简单的函数来弄
------解决方案-------------------- 引用: 昨天有一同事问:怎么获取指定年份的一月份的第一天。
比如2013年的第一天怎么获取,
--固定1月份第1天
declare @year int
set @year = 2013
select convert(datetime,(convert(nvarchar(10),@year) + '-01-01'))
------解决方案-------------------- 引用: Quote: 引用:
昨天有一同事问:怎么获取指定年份的一月份的第一天。
比如2013年的第一天怎么获取,
--固定1月份第1天
decla