很多时候我们想批量更改已发布文章的时间,网速搜罗了一下,基本都是更改为同一时间,这样导致全站网站发布时间是一样的,不太现实,那么如何批量修改已发布的文章时间是指定时间段内的呢?
先贴方法:在织梦后台执行sql语句
1 2 | UPDATE dede_archives SET sortrank=FLOOR(UNIX_TIMESTAMP()-1000 - RAND() * (3186400)) ,senddate=sortrank,pubdate=sortrank where id>=0; UPDATE dede_arctiny t SET senddate=( select senddate from dede_archives where t.id=id) where id>=0; |
3186400单位为秒,即随机的时间范围,id>=0即为全站文章生效,id<=50是限定范围,即只对id小于等于50的文档生效,
dede_archives表中有3个字段需要更改,即sortrank、senddate、pubdate(图2)
除此之外dede_arctiny表里面的sortrank、senddate也需要更改,此处和一键更新里的按指定时间相关(图3)
图1:
图2:
图3:
明白了上面sql语句的意思,还可以引申出不少语句
1、如果想在指定年份随机文章呢?
1 2 | UPDATE dede_archives SET sortrank=FLOOR(UNIX_TIMESTAMP( '2016-12-26 00:00:00' )-1000 - RAND() * (3186400)) ,senddate=sortrank,pubdate=sortrank where id<=50; UPDATE dede_arctiny t SET senddate=( select senddate from dede_archives where t.id=id) where id<=50; |
在UNIX_TIMESTAMP()里面加上你想指定的年月日即可
2、如果想全站生效呢?
1 2 | UPDATE dede_archives SET sortrank=FLOOR(UNIX_TIMESTAMP( '2016-12-26 00:00:00' )-1000 - RAND() * (3186400)) ,senddate=sortrank,pubdate=sortrank where id>=0; UPDATE dede_arctiny t SET senddate=( select senddate from dede_archives where t.id=id) where id>=0; |
或者去掉where id >= 0.
3、如果只想让栏目3的文章生效呢?
1 2 | UPDATE dede_archives SET sortrank=FLOOR(UNIX_TIMESTAMP( '2016-12-26 00:00:00' )-1000 - RAND() * (3186400)) ,senddate=sortrank,pubdate=sortrank where id>=0 and typeid=3; UPDATE dede_arctiny t SET senddate=( select senddate from dede_archives where t.id=id) where id>=0; |
加上and typeid=3 即可