sql时间间隔
① sql语句中,按时间段间隔查询怎么写
select * from 表 where 日期字段>='开始日期' and 日期字段<='截止日期'
and convert(char(8),日期字段,108)>='开始时间' and convert(char(8),日期字段,108)<='截止时间'
例如:
select * from tb1 where dDate>='2010-11-05' and dDate<='2010-11-15'
and convert(char(8),dDate,108)>='22:30:00' and convert(char(8),dDate,108)<='23:00:00'
② SQL查询中如何设置时间的间隔
可以在应用程序的代码里实现这个,没有必要在数据库里做
③ 一个设置SQL日期时间间隔的问题
SqlServer 常用日期函数:
getdate(),
dateadd(year,1,getdate()),
dateadd(mm,1,getdate()),
dateadd(day,1,getdate()),
dateadd(hh,1,getdate()),
dateadd(mi,1,getdate()),
dateadd(ss,1,getdate()),
convert(varchar,getdate(),121),
convert(datetime,'2001-01-01 00:00:00.000',121)
④ SQL 日期间隔
求指定日期的日期间隔?
datediff(日期部分,开始日期,结束日期)
⑤ Sql时间间隔
用sql代理定义一个作业,每小时执行一次
⑥ SQL语句时间间隔怎么查询(只取日期)
selectto_date(to_char(z,'yyyy-mm-dd'),'yyyy-mm-dd')-to_date(to_char(w,'yyyy-mm-dd'),'yyyy-mm-dd')+1from表名
试试这样
下边这个貌似更简单写,ceil是个向上取整的函数
selectceil(z-w)+1
from表名
⑦ SQL 时间间隔 问题
你这个是一个递归结余的计算问题哦!
可以参考这个里面的写法
/*
detail表记帐流水表
==========
字段:
qt_srMoney(money)收入
qt_zcMoney(money)支出
qt_date(datetime)操作日期
qt_dkfs(nvarchar)打款方式
------------------
需获取一个带结余的数据信息
==========
根据期初表中的日期和金额,查询出记帐表中的结余。
帐面结余=期初金额+收入-支出
实验环境:sqlserver2008R2
*/
createtabledetail(qt_srMoneymoney,
qt_zcMoneymoney,
qt_datedatetime,
qt_dkfsnvarchar(100))
insertintodetailvalues(100,0,'2018-1-210:00:00','other')
insertintodetailvalues(0,10,'2018-2-210:00:00','other')
insertintodetailvalues(0,20,'2018-3-210:00:00','other')
insertintodetailvalues(30,0,'2018-4-210:00:00','other')
insertintodetailvalues(10,60,'2018-5-210:00:00','other')
go
declare@datestartdatetime---开始计算日期
set@datestart='2018-2-1'
declare@qcomneymoney--期初
set@qcomney=100
selectt1.qt_date,t1.qt_dkfs,t1.qt_srMoney,t1.qt_zcMoney,sum(t2.qt_srMoney-t2.qt_zcMoney)+@qcomney
fromdetailt1,detailt2
wheret1.qt_date>=t2.qt_date
andt1.qt_date>=@datestart
groupbyt1.qt_date,t1.qt_dkfs,t1.qt_srMoney,t1.qt_zcMoney
orderbyt1.qt_date;
go
---避免日期出现两条导致结余数据计算异常-----
declare@datestartdatetime---开始计算日期
set@datestart='2018-2-1'
declare@qcomneymoney--期初
set@qcomney=100
withcteNameas
(
selectqt_srMoney,qt_zcMoney,qt_date,qt_dkfs,
row_number()over(orderbyqt_date)askeyIDfromdetailwhereqt_date>=@datestart
)selectt1.keyId,t1.qt_date,t1.qt_dkfs,t1.qt_srMoney,t1.qt_zcMoney,sum(t2.qt_srMoney-t2.qt_zcMoney)+@qcomney
fromcteNamet1,cteNamet2
wheret1.keyId>=t2.keyId
groupbyt1.qt_date,t1.qt_dkfs,t1.qt_srMoney,t1.qt_zcMoney,t1.keyId
orderbyt1.keyId;
go
truncatetabledetail
droptabledetail
⑧ sql 中取两个时间段的间隔怎么写
SELECT DATEDIFF(Hour, '8:30','14:23')
⑨ 关于SQL两个时间计算出间隔时间的问题。
直接相减是秒数,然后/60/60/24取整就是天,然后小数部分乘24再取整就是小时,然后小数部分乘60再取整就是分,然后小数部分乘60就是秒了
假设本题相减后:
to_date('2013-08-24 16:05:05','yyyy-mm-dd hh24:mi:ss')
-to_date('20132013-08-20 16:40:23','yyyy-mm-dd hh24:mi:ss'))
为X秒,则:
select to_char(floor(X/60/60/24))||'天'||to_char(floor((X/60/60/24-floor(X/60/60/24))*24))||'小时'||..........
⑩ 怎么用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