SELECT DATE_FORMAT(create_time,'%Y-%m-%d') days,COUNT(id) COUNT FROM role GROUP BY days;
成都创新互联是专业的崇左网站建设公司,崇左接单;提供成都网站设计、网站建设,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行崇左网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!
先转换xxxx-xx-xx时间格式,然后按时间格式进行分组。
sqlserver写法
其他数据库的话,语法得改,字段类型不一致的话也得改
创建表
create table test
(姓名 varchar(10),
时间 varchar(10))
insert into test values ('张三','2014-1-2')
insert into test values ('张三','2014-1-6')
insert into test values ('李四','2014-1-2')
执行
select s1.*
from
(select t2.姓名,t1.rq
from
(select convert(varchar(10),rq,120) rq
from
(select cast('2014-1-2' as datetime)+number rq from master..spt_values where type='p') t
where t.rq between '2014-1-2' and '2014-1-6') t1,
(select distinct 姓名 from test) t2) s1
where not exists (select 1 from test s2 where s1.姓名=s2.姓名 and s1.rq=convert(varchar(10),cast(s2.时间 as datetime),120))
结果
----------------------补充---------------
你下次能不能直接追问,这样补充都看不到的,幸亏我又看了一眼
select s1.*
from
(select t2.姓名,t1.rq
from
(select convert(varchar(10),rq,120) rq
from
(select cast('2014-1-2' as datetime)+number rq from master..spt_values where type='p') t
where t.rq between '2014-1-2' and '2014-1-6') t1,
(select 姓名 from 人员表) t2) s1
where not exists (select 1 from test s2 where s1.姓名=s2.姓名 and s1.rq=convert(varchar(10),cast(s2.时间 as datetime),120))
order by s1.姓名,s1.rq
我新建了一个人员表,里边就一列,叫“姓名”
declare @time1 datetime,@time2 datetime
set @time1='2016-11-24'
set @time2='2015-11-11'
select DATEDIFF(day,@time1,@time2) as [day],DATEDIFF(week,@time1,@time2) as [week],datediff(year,@time1,@time2) as [year]
datediff函数,第一个是时间单位,例如按天算差距,或者按周算,
后面两个就是要比较的时间参数。
这个没有什么特殊的约束,仅仅是提醒用户以后录入数据的时候单位是天而不是月或年,比如某商品的有效期为一年,那录入员在录入数据的时候不要写成了1(年),也不要写成了12(月),应该写365(天),如果一定要加个约束的话,那么应该约束成=0,因为有效期不应该为负数。
CONVERT(char(8),add_time,112) 这种东西是sqlserver的用法
你报错代码明显是mysql的,根本不是一个东西,不报错才稀奇呢。
自己查查mysql的日期转字符函数,然后再改语句吧。
1 备份我认为按天设置就可以了
2 维护策略 设置一下 每日索引重新生成,我认为就可以了