许多新手不太清楚SQL Server日期函数CAST和CONVERT以及它们在业务中是如何使用的。为了帮助大家解决这个问题,下面小编就为大家详细讲解一下。需要的人可以从中学习,希望你能有所收获。
最近刚从客户端转到后台写作服务,对于后台数据库和服务的写作来说完全是小白,所以最近的写作肯定没有太多的技术内容。首先,把遇到的问题摆出来:是同一个错误报告。字段主要包括精确到毫秒的错误标识(错误标识)、报告人(报告人)和报告时间(报告时间)。现在要做的统计是:
(1)统计一定时间内(开始时间、结束时间)每天每个人报错的次数。
(2)统计一定时间内(开始时间,结束时间)每个人每月报告的错误总数。
看到问题,第一个想到的就是想让group by ReportPerson计算每个人的统计数据,但是还没有达到要求。我还是需要每天获取大家的统计数据,指定时间格式,然后将时间格式限定为天、月、月。这两个问题都会解决。
现在详细介绍本文中使用的CAST和CONVERT:
先看它们的语法:cast(表达式为data _ type[(length)]convert(data _ type[(length)],表达式[,style]),其中:
表达式:任何有效的表达式。
数据类型:目标数据类型。
这包括xml、bigint和sql_variant。不能使用别名数据类型。
Length:可选整数,指定目标数据类型的长度。默认值为30。
样式:指定CONVERT函数如何转换表达式的整数表达式。
如果样式为空,则返回空值。该范围由data_type决定。
与本文相关的主要是篇幅和表述。长度是指目标类型的长度,用于限制时间的准确性。表达式是一种用于限制输出时间的格式,如yyyy/mm/dd/yyyy-mm-dd等。
现在,用这些知识来解决我的问题。首先,每天统计上报的金额,当天的准确时限是:
Convert (varchar (11),reporttime,20),即yyyy-mm-dd,通过使用group by problem求解。sql代码是:
代码如下:
选择ReportPerson,CONVERT(varchar(11),ReportTime,20)作为“ReportTime”,从PCR _ ConstructInfo中计数(*)作为reportTotal,其中(ReportTime ' 2012-11-15 12:11336012.23 ')和(report time ' 2013-1-16 12:12.23 ')按ReportPerson,CONVERT(varchar(11),report time,20)分组
另一个问题是统计每个人每月报告的错误数量。只需将时间和日期限制为月份,即convert (varchar (7),reporttime,20) yyyy-mm执行sql语句如下:
代码如下:
选择ReportPerson,CONVERT(varchar(7),ReportTime,20)作为“报告时间”,从PCR _ ConstructInfo中计数(*)作为报告总计,其中(ReportTime'2012-11-1 ')和(ReportTime'2013-2-1 ')按ReportPerson,CONVERT(varchar(7),ReportTime,20)分组
阅读以上内容对你有帮助吗?如果您想了解更多相关知识或阅读更多相关文章,请关注行业资讯频道,感谢您的支持。
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/128959.html