Ⅰ sql 怎么 把 日期列和时间列合并成列
SQL转换函数Convert,SQL如下:
日期转换:select convert(varchar,'2015-08-06')
时间转换:select convert(varchar,'08:30:00')
二者相加:select convert(varchar,'2015-08-06')+select convert(varchar,'08:30:00')
同理如果是字符串转日期格式,
Convert(date,'2015-08-06') 或 convrt(datetime,'2015-08-06 09:40:00‘)
Ⅱ sql server 怎么把同一时间的数据累加合并成一条数据
用sum函数加group by配合就可以达到你的要求了,例如这样,select sum(num) from table group by time,希望对你有帮助
Ⅲ sql合并多个时间段
如果是oracle 我会使用一个临时表,包含人员,持续开始时间,持续结束时间,处理任务,处理方法如下
首先取出某员工一天的所有工作记录,按开始时间排序后逐条处理
首先将第一条记录插入到临时表中,持续开始时间为 开始时间,持续结束时间为结束时间,处理任务为1;
在取到后续记录时,作如下处理
如果开始时间 > 临时表中已经存在的所有结束时间,则新增一条记录,与第一条处理方式一致;
如果开始时间 <=临时表中已经存在的某一结束时间处理如下
如果 结束时间 <=临时表中已经存在的某一结束时间,不作任何插入和更新;
如果 结束时间 >临时表中已经存在的某一结束时间,更新临时表中对应记录为当前取到的结束时间;
按照以上规则直至所有数据均处理完成,此时临时表中获得的是不重叠的所有工作时间,采用group 即可获得一天是实际工作时间,进而可以求出休息时间。
Ⅳ 一个记录表中有工号,日期时间,每天3个时段都有记录。怎样用sql语句按照一段时间,不同时间段把记录合并
使用 CASE WHEN语句判断时间区间,确定是用餐类型。
SQL Server 举例:
select 名称,卡号,时间,
case when 时间 between CONVERT(varchar(11),时间,121)+'6:00:00' and CONVERT(varchar(11),时间,121) + '10:29:59' then '早餐'
when 时间 between CONVERT(varchar(11),时间,121)+'10:30:00' and CONVERT(varchar(11),时间,121) + '14:59:59' then '中餐'
when 时间 between CONVERT(varchar(11),时间,121)+'15:00:00' and CONVERT(varchar(11),时间,121) + '20:59:59' then '晚餐'
when 时间 between CONVERT(varchar(11),时间,121)+'21:00:00' and CONVERT(varchar(11),时间+1,121) + '01:30:00' then '宵夜'
end 用餐类型
from tab
其它数据库应该有类似于语法。
Ⅳ sql中按时间多天数据合并成一条数据
1.
请确认你的数据库类型
sqlserver
还是oracle?
2.
大致思路
根据姓名,编号,业务类别,交易时间(格式化到天)
进行聚合处理,金额用sum,次数用count,最近次数用max
3.
如果是oracle
可以这么做
select
name ,id
,type ,sum(costs),count(name),trunc(busi_date),max(busi_code)
from
table
group
by
name ,id
,type ,trunc(busi_date)
Ⅵ 如何在SQL合并日期+时间,然后相减
问题一:SELECT DATEDIFF( Day, '2008.08.25', '2008.09.01' )
问题二:SELECT DATEDIFF( Second, 2009-8-25 12:15:12', 2009-9-1 7:18:20') --返回相差秒数
或者
SELECT DATEDIFF( Minute, 2009-8-25 12:15:12', 2009-9-1 7:18:20') --返回相差分钟数
或者
SELECT DATEDIFF( Hour, 2009-8-25 12:15:12', 2009-9-1 7:18:20') --返回相差小时数
问题三:SELECT DATEDIFF( Day, 2009-8-25 12:15:12', 2009-9-1 7:18:20')
附:
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
Ⅶ sql把时间类型字段合并成一个,求解答!!如图。
--可以用下面的代码
selectp_name,MIN(r_data_begin)r_data_begin,MAX(r_data_down)r_data_down,SUM(r_month_money)r_month_money,SUM(r_total_money)r_total_money,r_HeNamefrom#sgroupbyp_name,r_HeName