时间段报表

  switch (timeQuantum)
            {
                case "year":
                    str = "SELECT  CONVERT(char(4),YEAR(lo.CREATEDATE),21) AS 'CREATEDATE',lo.SYS_NAME, lo.TYPE_NAME,count(*) as 'COUNT' FROM LOG_ELOG lo  ";
                    strGroupBy = " GROUP BY lo.SYS_NAME,lo.TYPE_NAME,CONVERT(char(4),YEAR(lo.CREATEDATE),21) Order By lo.SYS_NAME,Lo.TYPE_NAME,CONVERT(char(4),YEAR(lo.CREATEDATE),21)  ";
                    break;
                case "quarter":
                    str = " SELECT convert(char(4),datepart(year,lo.CREATEDATE),21)+' '+ case datepart(month,DATEADD(qq, DATEDIFF(qq,0,lo.CREATEDATE), 0)) when 1 then '一季度' when 4 then '二季度' when 7 then '三季度' when 10 then '四季度' end AS 'CREATEDATE',lo.SYS_NAME,lo.TYPE_NAME,COUNT(*) AS 'COUNT' FROM LOG_ELOG lo ";
                    strGroupBy = "  GROUP BY lo.SYS_NAME,lo.TYPE_NAME,convert(char(4),datepart(year,lo.CREATEDATE),21)+' '+case datepart(month,DATEADD(qq, DATEDIFF(qq,0,lo.CREATEDATE), 0)) when 1 then '一季度' when 4 then '二季度' when 7 then '三季度' when 10 then '四季度'end  ";
                    break;
                case "month":
                    str = "SELECT  CONVERT(char(4),YEAR(lo.CREATEDATE),21)+'-'+CONVERT(char(2),month(lo.CREATEDATE),21) AS 'CREATEDATE',lo.SYS_NAME, lo.TYPE_NAME,count(*) as 'COUNT' FROM LOG_ELOG lo  ";
                    strGroupBy = " GROUP BY lo.SYS_NAME,lo.TYPE_NAME,CONVERT(char(4),YEAR(lo.CREATEDATE),21)+'-'+CONVERT(char(2),month(lo.CREATEDATE),21)  Order By lo.SYS_NAME,Lo.TYPE_NAME, CONVERT(char(4),YEAR(lo.CREATEDATE),21)+'-'+CONVERT(char(2),MONTH(lo.CREATEDATE),21) ";
                    break;
                case "week":
                    str = " SELECT convert(char(4),datepart(year,lo.CREATEDATE),21)+' '+convert(varchar(2),DATEPART(wk, lo.CREATEDATE))+'周' AS 'CREATEDATE',lo.SYS_NAME, lo.TYPE_NAME,count(*) as 'COUNT' from LOG_ELOG lo ";
                    strGroupBy = " group BY lo.SYS_NAME, lo.TYPE_NAME,convert(char(4),datepart(year,lo.CREATEDATE),21)+' '+convert(varchar(2),DATEPART(wk, lo.CREATEDATE))+'周' ";
                    break;
                case "onlyday":
                    str = " SELECT CONVERT(char(10), lo.CREATEDATE, 21) AS 'CREATEDATE',lo.SYS_NAME,lo.TYPE_NAME,COUNT(*) AS 'COUNT' FROM LOG_ELOG lo ";
                    strGroupBy = " GROUP BY lo.SYS_NAME,lo.TYPE_NAME,CONVERT(char(10), lo.CREATEDATE, 21) ORDER BY lo.SYS_NAME,Lo.TYPE_NAME,CONVERT(char(10), lo.CREATEDATE, 21) ";
                    break;
                case "hour":
                    str = " SELECT CONVERT(char(13), lo.CREATEDATE, 21)+'时' AS 'CREATEDATE',lo.SYS_NAME,lo.TYPE_NAME,COUNT(*) AS 'COUNT' FROM LOG_ELOG lo ";
                    strGroupBy = " GROUP BY lo.SYS_NAME,lo.TYPE_NAME,CONVERT(char(13), lo.CREATEDATE, 21)+'时' ORDER BY lo.SYS_NAME,Lo.TYPE_NAME,CONVERT(char(13), lo.CREATEDATE, 21)+'时' ";
                    break;
            }
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
LabWindows CVI是一种基于Windows的集成开发环境(IDE),用于开发、调试、部署和测试各种形式的工程应用程序。在实际应用中,我们经常需要将实验或测试数据保存为报表,并可以按照时间进行保存,方便管理和查阅。 针对这种需求,可以使用LabWindows CVI提供的文件操作函数和时间函数,编写一段程序来实现。 首先,我们需要定义一个文件名,可以以当前时间为基础,命名为“年月日_时分秒.csv”。代码如下: ```c char filename[50]; time_t now; struct tm * local_time; time(&now); local_time = localtime(&now); sprintf(filename, "%04d%02d%02d_%02d%02d%02d.csv", local_time->tm_year + 1900, local_time->tm_mon + 1, local_time->tm_mday, local_time->tm_hour, local_time->tm_min, local_time->tm_sec); ``` 其中,time函数获取当前时间的秒数,而localtime函数则将这个秒数转换为本地时间。 接下来,我们可以用fopen函数创建或打开一个CSV文件,并将数据写入文件中。代码如下: ```c FILE * fp; double data[N]; fp = fopen(filename, "w"); fprintf(fp, "Time,Data1,Data2,Data3\n"); for (int i = 0; i < N; i++) { // 获取数据 // ... // 写入文件 fprintf(fp, "%d:%d:%d,%.2f,%.2f,%.2f\n", local_time->tm_hour, local_time->tm_min, local_time->tm_sec, data[0], data[1], data[2]); } fclose(fp); ``` 其中,fopen函数以“写入”模式打开文件,而fprintf函数在每次循环中将数据写入文件。 最后,我们可以在程序退出时删除早于7天的文件,避免占用过多磁盘空间。代码如下: ```c char buffer[50]; time_t timestamp; struct stat file_stat; double difftime; for (int i = 0; i < 7; i++) { // 获取时间戳 time(&timestamp); timestamp -= i * 24 * 60 * 60; // 格式化时间字符串 strftime(buffer, 50, "%Y%m%d", localtime(&timestamp)); sprintf(filename, "%s_000000.csv", buffer); // 删除文件 if (stat(filename, &file_stat) == 0) { difftime = difftime(time(&now), file_stat.st_mtime) / 86400.0; if (difftime > 7) remove(filename); } } ``` 其中,strftime函数用于格式化日期字符串,stat函数则获取文件的状态信息,并可以得到该文件的修改时间。最后,如果该文件的修改时间早于7天,则用remove函数删除之。 通过上述代码,我们可以轻松实现基于时间保存报表的功能,方便我们管理和查阅实验或测试数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值