帝国CMS标签调用的附加SQL条件和排序参数

4、本月热点排行的sql条件调用
只需设置标签“附加SQL条件”参数为:’newstimeUNIX_TIMESTAMP()-86400*30′

Mysql的各种时间函数

附加SQL条件和排序参数介绍:
帝国CMS6.5以上版本在原来所有信息调用标签基础上增加了两个标签参数:附加SQL条件和显示排序。
支持这两个参数的标签有如下:
ecmsinfo、灵动标签、phomenews、phomenewspic、phomeflashpic、phomeautopic、listsonclass、phomenewstext
语法说明: 以灵动标签为例,标签语法为:
[e:loop={栏目ID/专题ID,显示条数,操作类型,只显示有标题图片,附加SQL条件,显示排序}]
模板代码内容 [/e:loop]
其中附加SQL条件和显示排序这两个参数,如果不使用可以不设置或者则用”两个单引号表示。例如:
[e:loop={1,10,0,0,”,”}]和[e:loop={1,10,0,0}]是一样的效果。
举例说明: 以灵动标签为例: 例子1:调用标题包含“cms”的新闻
6.0以前版本要使用SQL调用,如下: [e:loop={“select * from
phome_ecms_news where title like ‘%cms%’ and checked=1 order by
newstime desc limit 10″,10,24,0}] a href=”?=$bqsr[titleurl]?”
target=”_blank”?=$bqr[title]?/abr [/e:loop]
而新版本用下面就可以实现上面效果: [e:loop={‘news’,10,18,0,”title like
‘%cms%'”,”}] a href=”?=$bqsr[titleurl]?”
target=”_blank”?=$bqr[title]?/abr [/e:loop]
无需写SQL语句,而且调用父栏目时不需要按原来SQL调用写全所有终极栏目ID,更简单更方便。
例子2:按DIGG顶数降序显示新闻信息 6.0以前版本要使用SQL调用,如下:
[e:loop={“select * from phome_ecms_news where checked=1 order by
diggtop desc limit 10″,10,24,0}] a href=”?=$bqsr[titleurl]?”
target=”_blank”?=$bqr[title]?/abr [/e:loop]
而新版本用下面就可以实现上面效果: [e:loop={‘news’,10,18,0,”,’diggtop
desc’}] a href=”?=$bqsr[titleurl]?”
target=”_blank”?=$bqr[title]?/abr [/e:loop]
还支持多字段排序,比如:’istop desc,id desc,title desc’
例子3:显示一周内信息点击排行 6.0以前版本要使用SQL调用,如下:
[e:loop={“select * from phome_ecms_news where checked=1 and
newstimeUNIX_TIMESTAMP()-86400*7 order by onclick desc limit
10″,10,24,0}] a href=”?=$bqsr[titleurl]?”
target=”_blank”?=$bqr[title]?/abr [/e:loop]
而新版本用下面就可以实现上面效果:
[e:loop={‘news’,10,18,0,’newstimeUNIX_TIMESTAMP()-86400*7′,’onclick
desc’}] a href=”?=$bqsr[titleurl]?”
target=”_blank”?=$bqr[title]?/abr [/e:loop]
例子4:调用3级头条的信息 [e:loop={‘news’,10,18,0,’firsttitle=3′}]
a href=”?=$bqsr[titleurl]?” target=”_blank”?=$bqr[title]?/abr
[/e:loop] 例子5:调用5级推荐的信息
[e:loop={‘news’,10,18,0,’isgood=5′}] a href=”?=$bqsr[titleurl]?”
target=”_blank”?=$bqr[title]?/abr [/e:loop]
上面是以灵动标签为例,其他信息调用标签使用也是一样,参数后面直接加上面两个参数即可。

以ecmsinfo标签为例:
[ecmsinfo]0,10,30,0,4,7,0,‘newstimeUNIX_TIMESTAMP()-86400*30’[/ecmsinfo]

 

注意红色部分: 30是指30天。

mysql 的时间函数很丰富

1.mysql 查询时间中秒不为0的过滤条件

Sql代码  

SECOND(t.file_time)  

 2.当前时间

Sql代码  

now()   

 3.一天前

Sql代码  

select DATE_SUB(curdate(), INTERVAL 1 DAY)  

 4.timestamp默认值

mysql timestamp字段的怪异问题

创建表语句:

Sql代码  

CREATE  TABLE `testtimestamp` (  

  `id` INT NOT NULL AUTO_INCREMENT,  

  `file_time` TIMESTAMP NOT NULL ,  

  `scan_time` TIMESTAMP NULL ,  

  `created` TIMESTAMP NOT NULL ,  

  `modified` TIMESTAMP NOT NULL ,  

  PRIMARY KEY (`id`)  

) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;  

 执行后,file_time 的默认值为CURRENT_TIMESTAMP ON UPDATE
CURRENT_TIMESTAMP

scan_time 的默认值为NULL

created 和 modified的默认值 为’0000-00-00 00:00:00′

很奇怪的问题,创建语句的第一个timestamp字段为CURRENT_TIMESTAMP ON
UPDATE CURRENT_TIMESTAMP

而且file_time在update时如果set组中无则会默认为now() !!!???

这样会导致有默认值,且如果update语句中无此字段,会默认填充当前时间。

修改类型:

Sql代码  

ALTER TABLE `database`.`tablename` CHANGE COLUMN `columname`
`columname` TIMESTAMP NOT NULL DEFAULT ‘0000-00-00 00:00:00’  ;  

 

mysql 的时间函数很丰富
1.mysql 查询时间中秒不为0的过滤条件 Sql代码 SECOND(t.file_time)
2.当前时间 Sql代码 now() 3.一天前…

You can leave a response, or trackback from your own site.

Leave a Reply

网站地图xml地图