sql時間計算
1. sql日期計算
1,
select dateadd(dd,2-datepart(dw,dateadd(wk,周數-1,年份)),dateadd(wk,周數-1,周數)),dateadd(dd,8-datepart(dw,dateadd(wk,周數-1,周數)),dateadd(wk,周數-1,周數))
注意:年份的格式為『****-01-01』,如你這里的2009年則是『2009-01-01』
2,
declare @i int
declare @datetime datetime
declare @table table(ID int,date datetime)
set @i=1
set @datetime=年份+月份+01(格式如『2009-06-01』)
while @datetime < 年份+(月份+1)+01(格式如『2009-07-01』)
begin
if datepart(weekday,@datetime)=2
begin
insert into @table values(@i,@datetime)
set @i=@i+1
end
set @datetime=dateadd(day,1,@datetime)
end
select * from @table where ID=周數
我這樣寫應該很容易看,有什麼問題再問我,要求加分……
2. SQL中怎麼計算兩日期之間的天數
DECLARE @Date datetime
set @Date = '2010-01-01'
SELECT DATEDIFF(d,@Date,getdate())
DATEDIFF直接算天數 但你還要按小時來算 估計得自己寫自己定義函數了
3. sql 計算出某個時間的到期日
select
p_id,
p_sdate,
case when year(dateadd(mm,6,p_sdate))<=year(getdate()) then dateadd(mm,6,p_sdate)
else cast(cast(year(p_sdate)+1 as char(4))+'-02-28' as datetime) end as p_edate,
case when dateadd(mm,6,p_sdate))<getdate() then '已到期' else ' 正常' end as p_state,
from tb_test
4. sql怎麼計算時間差
返回跨兩個指定日期的日期和時間邊界數。
語法
DATEDIFF(datepart,startdate,enddate)
參數
datepart
5. 如何計算sql語句執行時間的時間
sql中一般用datediff函數來表示時間差。
基本語法:
DATEDIFF(datepart,startdate,enddate)
說明:
startdate 和 enddate 參數是合法的日期表達式。
datepart 參數可以是下列的值:
例子:
例子 1
使用如下 SELECT 語句:
SELECT DATEDIFF(day,'2008-12-29','2008-12-30') AS DiffDate
結果:
DiffDate
1
例子2
使用如下 SELECT 語句:
SELECT DATEDIFF(day,'2008-12-30','2008-12-29') AS DiffDate
結果:
DiffDate
-1
6. 求sql 時間的計算方法
DATEADD 函數 [日期和時間]
--------------------------------------------------------------------------------
作用
返回通過將若干日期部分添加到日期中而產生的日期。
語法
DATEADD ( date-part, numeric-expression, date-expression )
date-part :
year | quarter | month | week | day | hour | minute | second | millisecond
參數
date-part 要添加到日期中的日期部分。
numeric-expression 要添加到日期中的日期部分的數值。numeric_expression 可以是任意數字類型,但它們的值將被截斷成整數。
date-expression 要修改的日期。
示例
下面的語句返回值:1995-11-02 00:00:00.0。
SELECT dateadd( month, 102, '1987/05/02' ) 標准和兼容性
7. SQL 時間差計算
同一個ID有可能存在多次登陸和登出
用嵌套
--> --> (Roy)生成測試數據
declare @T table([UserID] int,[OnP] nvarchar(3),[OnTime] Datetime)
Insert @T
select 1,N'on','2007-7-1 7:00' union all
select 1,N'off','2007-7-1 8:00' union all
select 2,N'on','2007-8-9 12:45' union all
select 3,N'on','2007-8-9 13:50' union all
select 2,N'off','2007-8-9 16:11' union all
select 3,N'off','2007-9-1 14:00' union all
select 4,N'on','2008-10-1 3:00'
select
[UserID],sum(時間) as 時間
from
(Select [UserID],
datediff(hh,[OnTime],
(select isnull(min([OnTime]),getdate()) from @T where [OnTime]>t.[OnTime] and [OnP]='off')) as 時間
from
@T t
where [OnP]='on')ta
group by [UserID]
8. 在Sql語句中怎樣計算出兩個日期的差值
sql語句中計算兩個日期的差值用datediff函數。
工具:sqlserver 2008 R2
步驟:
1、計算2009-06-23與2009-06-17之間的天數。語句如下:
selectdatediff(d,'2009-06-17','2009-06-23')
2、查詢結果:
9. 怎麼用SQL語句計算時間間隔
DATEDIFF
返回跨兩個指定日期的日期和時間邊界數。
語法
DATEDIFF ( datepart ,startdate ,enddate )
參數
datepart
是規定了應在日期的哪一部分計算差額的參數。下表列出了 Microsoft® SQL Server™ 識別的日期部分和縮寫。
日期部分縮寫
year yy, yyyy
quarter qq, q
Month mm, m
dayofyear dy, y
Day dd, d
Week wk, ww
Hour hh
minute mi, n
second ss, s
millisecond ms
startdate
是計算的開始日期。startdate 是返回 datetime 或 smalldatetime 值或日期格式字元串的表達式。
因為 smalldatetime 只精確到分鍾,所以當用 smalldatetime 值時,秒和毫秒總是 0。
如果您只指定年份的最後兩位數字,則小於或等於"兩位數年份截止期"配置選項的值的最後兩位數字的數字所在世紀與截止年所在世紀相同。大於該選項的值的最後兩位數字的數字所在世紀為截止年所在世紀的前一個世紀。例如,如果 two digit year cutoff 為 2049(默認),則 49 被解釋為 2049,2050 被解釋為 1950。為避免模糊,請使用四位數的年份。
有關時間值指定的更多信息,請參見時間格式。有關日期指定的更多信息,請參見 datetime 和 smalldatetime。
enddate
是計算的終止日期。enddate 是返回 datetime 或 smalldatetime 值或日期格式字元串的表達式。
返回類型
integer
注釋
startdate 是從 enddate 減去。如果 startdate 比 enddate 晚,返回負值。
當結果超出整數值范圍,DATEDIFF 產生錯誤。對於毫秒,最大數是 24 天 20 小時 31 分鍾零 23.647 秒。對於秒,最大數是 68 年。
計算跨分鍾、秒和毫秒這些邊界的方法,使得 DATEDIFF 給出的結果在全部數據類型中是一致的。結果是帶正負號的整數值,其等於跨第一個和第二個日期間的 datepart 邊界數。例如,在 1 月 4 日(星期日)和 1 月 11 日(星期日)之間的星期數是 1。
示例
此示例確定在 pubs 資料庫中標題發布日期和當前日期間的天數。
USE pubs
GO
SELECT DATEDIFF(day, pubdate, getdate()) AS no_of_days
FROM titles
GO
10. sql時間差的計算
這是ORACLE是SQL2000的?
給個ORACLE的例子:
select floor(to_number(to_date(20110621100000,'yyyymmdd hh24:mi:ss')-to_date(20110621095505,'yyyymmdd hh24:mi:ss'))*24*60) from al;