现在要从数据库查询数据,要求结果按日期排序,并返回连续日期,假如数据中有间断,要求新增一条数据补齐。

现在要从数据库查询数据,要求结果按日期排序,并返回连续日期,假如数据中有间断,要求新增一条数据补齐。,第1张

之前的回答是随意复制代码的 后来觉得这样太不像话了 那么附上源码:$conn=mysql_connect('','','');mysql_select_db();

mysql_query("set names'utf8'");

$stime='2012-04-01';

$etime=date('Y-m-d');

$arr=array();

$res=mysql_query("select from tab_xxx");#从你的表中查出数据

while($row=mysql_fetch_assoc($res)){

$arr[$row['date']]=$row;#把你的数据按照日期=》数据的数组存起来。

}

$sql="select datediff('"$stime"','"$etime"')";#查询你的时间段内总共有多少天

$datenum=mysql_query($sql);

$nums=mysql_fetch_array($datenum);

$num=$nums[0];

for($i=0;$i<$num;$i++){

$sql="select date_add('"$stime"',INTERVAL 1 DAY);";

$res=mysql_query($sql);

$row=mysql_fetch_array($res);

if(!array_key_exists($row[0])){#检测 如果查出来的数据中 没有该日期对应的数据

#$sql="insert into tab_xxx(date,,,,)values('"$row"')"; 向你的表中补空该日的数据

}

}楼主自己去测试一下吧。思路整体实现都在这儿了 我这个是php的做法。不过是依赖数据的。c#的你自己看着改一下就好了

首先我不知道你的日期字段到底是什么,这一点我想要先确定,如果是datetime型的话,那么你按照这个排序照理来说本来就是精确到秒的,你最好拿出一个日期的实际值给我们

如果你的日期字段其实是文本型,存储的诸如:'20090101’,那么根本就不可能考虑什么秒或者毫秒,因为你根本就没有存储这些信息

至于SqlServer的时间排序法,datetime型因为本身就是诸如

'20091001 11:23'这样的格式,所以排序根本不需要考虑什么日期相同怎么办,如果有些奇怪的人喜欢用月、年、日期排序,也不是不可以

比如说

order by month(gatedate()),year(gatedate()),day(gatedate())

秒和分钟的函数我急不起来了,你可以查一下帮助,无论你想要怎么排序都是非常容易的

select from 表 order by 时间字段

这样取出来的数据就是按时间排序了。

如果想数据不用order by 就是按时间排序的,需要把时间字段设置成聚集索引。

就是对日期进行倒排序

select from tableName -- 假设你的表的名字是tableNameorder by dtcol desc; -- 假设你的日期字段名是 dtcol; desc表示倒排序

以上就是关于现在要从数据库查询数据,要求结果按日期排序,并返回连续日期,假如数据中有间断,要求新增一条数据补齐。全部的内容,包括:现在要从数据库查询数据,要求结果按日期排序,并返回连续日期,假如数据中有间断,要求新增一条数据补齐。、sql order by 日期 排序问题、sql带-的日期可以排序吗等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/10157982.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-05
下一篇2023-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存