CAKEPHP 多域名共享SESSION的方法

2013-06-04 , CakePHP   

在同一域名下的子域名共享SESSION方法:

修改 app/Config/core.php:
Configure::write(‘Session’, array(
‘defaults’ => ‘php’,
‘ini’=>array(
‘cookie_domain’=>’xxxx.com’
)
));

在不同域名下共享SESSION,最好用DATABASE。

Ubuntu下使用rsync最快速删除海量碎片文件的方法

2013-05-29 , Linux   

昨天遇到了要在Linux下删除海量文件的情况,需要删除数十万个文件。这个是之前的程序写的日志,增长很快,而且没什么用。这个时候,我们常用的删除命令rm -fr * 就不好用了,因为要等待的时间太长。所以必须要采取一些非常手段。我们可以使用rsync来实现快速删除大量文件。

1、先安装rsync:
yum install rsync
2、建立一个空的文件夹:
mkdir /tmp/test
3、用rsync删除目标目录:
rsync --delete-before -a -H -v --progress --stats /tmp/test/ log/
这样我们要删除的log目录就会被清空了,删除的速度会非常快。rsync实际上用的是替换原理,处理数十万个文件也是秒删。

选项说明:
--delete-before 接收者在传输之前进行删除操作
--progress 在传输时显示传输过程
-a 归档模式,表示以递归方式传输文件,并保持所有文件属性
-H 保持硬连接的文件
-v 详细输出模式
--stats 给出某些文件的传输状态

让全站显示灰色的CSS代码

2013-04-20 , HTML5   

每逢重大灾难,各大知名网站总要把全站显示灰色,以示悼念。总不能手工把所有的图片和css颜色都修改吧。那得多大工作量。其实很简单,只需一行css代码就能让网站所有图片和文字显示灰色:

<style type="text/css">html{filter:progid:DXImageTransform.Microsoft.BasicImage(grayscale=1);-webkit-filter:grayscale(100%);}</style>

产品运营经理值得一看:快递员给搜狗号码通的神建议

2013-03-29 , 网络营销   

近日,一名快递员工跨界对某公司的互联网产品的评论剑走偏锋,异常犀利,在微博上引起大规模争论,就连该公司CEO本人都为其鼓掌,甚至有传言说有其竞争对手愿出月薪三万雇佣该员工遭拒。编辑现将全文收录如下,与各位读者共享。

  搜狗号码通,可以打通快递这条线

  我是一名普通的快递员,跑一线的,在一家国内大型的民营快递公司工作,反正不是”四通一达”之内,国内第一个包飞机的。你应该猜出来了,猜不出来也没关系。

  我今天只谈一个话题:用”众包”的思路来玩互联网产品运营。我要给搜狗BOSS王小川提个我琢磨了半年的建议。

  大家别笑。扫地的可能是高僧,会抢沙发的可能是明星,8点20拿钱发微博的可能是公知。这年头,玩的就是个crossover。

  为了证明我是有干货的。我先提一个观点,您看您认同不认同:我认为,360有今天的成功,和运营上的”众包”有莫大(博客,微博)关系。可能360自己都没意识到。

  此话怎讲?当年流氓软件还很多,病毒木马也猖狂,电脑动不动搞崩溃,当年DIY卖场的装机员、品牌机的售后工程师,每次帮客户修完电脑,临走之前,一定会干一件事:装个360,免得以后再因为打补丁、中流氓之类破事再来烦自己。就连大学里的屌丝,在对待黑木耳的求救,也是用”装个360″敷衍,只有女神才值得他一遍又一遍无休止的上门服务。

  这叫啥?这叫口碑么?不完全是。这其实是无心插柳的运营推广”众包”。

  我要说的是王小川。他们家有一款产品叫搜狗号码通。之所以说这款产品,有几个原因:1、它的产品模式最核心本质是”众包”,再过几年,这一点会越来越清晰;2、它是迄今为止,我见过最适合用”众包”思路来做运营的一款App;3、它和我们快递行业有很大渊源,快递甚至可以成为号码通”众包运营”的起点。

  虚的不说。去年8月开始,搜狗号码通和几家快递公司有个合作,把大概1万个快递员的电话号码导入到了自己的数据库。如果装了号码通,顾客接到这个库里快递员的电话,会显示”XX快递”的标记信息。

  我必须澄清一点。这叫BD合作,不叫众包运营。但前者是后者的基础。BD做不好,”众包”玩不起来。怎么玩?干货来了。

  第一步:BD洽谈,用搜狗输入法做筹码,换快递员名单。

  我还是得说,这是BD,不是众包。但是,搜狗号码通目前的用户基数太小,DAU最多200万级,MAU不超过1500万,远远没有达到可以定游戏规则的时候。说白了,BD谈判的筹码不多。

  舍不得孩子套不到狼。把搜狗输入法资源打包进来换吧。其实很简单。只需要把搜狗输入法的品牌词给快递公司,比如输入”顺丰”,展示其快递电话和网址。这样绝对好谈。

  说出一个数字吓死你,中国民营的快递公司有10000家以上。但记住Pareto’sLaw(二八法则),搜狗只需要谈下30家最大的。这个不难,搞定几家大的,其他自然有羊群效应。

  这一步,可以拿下多少快递员电话?我们公司大概就有小10万员工,所以,我猜至少得有50万以上吧。

  第二步:打通”超级电话本”,让快递员受益。

  如何运营这50万个快递员,是个关键,也是”众包”的起点。在BD中,快递公司是主角;在众包中,快递员是主角。我觉得搜狗号码通得先想办法让快递员尝点甜头。

  上号码本吧。凭我多年跑快递,和顾客打交道的经验,几乎很少有顾客会记录快递的电话,除非是公司行政。他们总是在需要的时候顺手查一下快递的电话。这就是突破口。将这50万个电话号码和搜狗号码通的”超级电话本”对接,LBS匹配,让用户检索”快递”显示本地业务员的电话即可。

  你可能要吐槽,顾客更喜欢接入快递公司Callcenter,但从体验来讲顾客是喜欢直接联络快递员的,而如果你熟悉快递员的KPI体系,你就明白,快递员也乐意顾客直接找他。

  如此结果,快递员是乐意向他的顾客推荐搜狗号码通的。

  其实类似的模式在打车领域已经有苗头。北京有公开的出租车热线,用户拨打电话接入呼叫中心,由中心下发需求至出租车司机。但这种机制运转得似乎并不太好。现在的打车App(很多,比如滴滴打车、点点打车等等)开始直接LBS匹配,你可以和司机通话,甚至可以看到出租车过来的路线。

  第三步:勋章体系,把快递员变成推广员。

  你们搞互联网的,最擅长这个,弄个虚头八脑的勋章系统,就能让用户免费给你打工,还屁颠屁颠的。以我的观察,这几乎是”众包”模式的标配。

  来吧。为快递员搞个勋章系统吧。游戏规则肯定会很复杂,早期,我只想了一个核心的权重:该快递员电话或者短信接通的号码通用户次数。后期随着号码通用户基数的提升,可以降权。

  勋章和什么绩效挂钩呢?还是超级电话本。类似于竞价系统嘛。

  第四步:深度运营,打通号码通和移动搜索。

  我手里的数据比较陈旧,2006年,中国有多少个包裹要寄出呢?大概10亿。现在电商已经井喷,这个数字估计应该翻了几番。互联网时代,这里面蕴藏着多少检索、查询的机会啊。从查快递电话,到查物流状态,号码通、搜索、快递打通几乎是必然。

  王小川讲过的一句话我很认同,原话我记不住了,大致是说一款有价值的产品,不一定是完整的生命,把更多有价值的产品串联起来,能释放更大的能量,或者找到商业落脚。

  最后我想说的是,我曾经向很多顾客推广过搜狗号码通,趁着他们填快递单的时候,几乎只要一句话就可以打动他们:有时候给您电话的时候您在开会,如果装了搜狗号码通,你就知道是快递打过来的,不会忘记回个电话。

  您看,这”众包”模式,有生存土壤吧?

OpenSSL生成密钥和公钥

2013-03-27 , Linux   

1 生成私钥:

openssl genrsa -out rsa_private_key.pem 1024

2 根据私钥生成与之配对的公钥:

openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem

3 将第1步生成的私钥转换成PKCS8格式:

openssl pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt

IE8 CSS HACK

2013-03-27 , HTML5   

首先感谢“丸子”提供的这个IE8的css hack;
关注过IE8的css hack的人相信大家都在使用这个hack,就是“\9”的css hack:
.test{
color:#000000; /* FF,OP支持 */
color:#0000FF\9; /* 所有IE浏览器(ie6+)支持 ;但是IE8不能识别“*”和“_”的css hack;所以我们可以这样写hack */
[color:#000000;color:#00FF00; /* SF,CH支持 */
*color:#FFFF00; /* IE7支持 */
_color:#FF0000; /* IE6支持 */
}
包括我自己也是使用这种的,这是我前段时间整理的《主流浏览器的一些CSS hack》。(转载请注明出处:WEB前端开发 http://www.css88.com/)
很多人再研究color:#0000FF\9;中的为什么IE6-IE8支持“\9”写法,和它的原理,我只是个工程师,不是科学家,我不懂为什么和它的真正原理,真的!很惭愧!
昨天在某个群里也看到部分前端工程师或网页重构师势利的一面,同样的一个解决方案,大公司有名的前端工程师或网页重构师写的东西都追捧,而小公司没名气的前端工程师或网页重构师写的解决方案却被反问:“css有这种写法吗?看来你连最基本的css的几个属性和属性值都没搞懂;就算你解决了问题你写的css也是不规范的,就是规范你跟我讲讲你解决方案的原理;”同样的一个解决方案,大公司有名的前端工程师或网页重构师写的这些反问质疑就全都没了,拼命的去研究他这个解决方案,呵呵,我觉得那些人很可笑。还有很多人问问题只有得到大公司有名的前端工程师或网页重构师的肯定回答后才放心而又开心的走了,甚至不留一句谢谢。当然没人(包括我)否认大公司有名的前端工程师或网页重构师在业界的影响力,他们为前端和重构业界做的贡献大家都是看得到的,只是觉得做人(特别是我们做技术的)不能太势利,多一点技术共享和探讨,多一点感激,学习成长才是最重要的。我承认我以前经常骂人,骂人家SB,内参国王说的对,骂人家SB就等于骂自己SB,我以前是很SB。不想探讨就看着呗,骂人是不对的!(转载请注明出处:WEB前端开发 http://www.css88.com/)
扯远了,回到IE8的CSS hack,讲讲color:#0000FF\9:
color:#0000FF\9的hack支持IE6-IE8(其他版本没有测试),但是IE8不能识别“*”和“_”的css hack,所以我们可以使用
color:#0000FF\9; ;/*ie6,ie7,ie8*/
*color:#FFFF00;/*ie7*/
_color:#FF0000;/*ie6*/
来区分IE的各个版本。
至于为什么使用“\9”我真的不清楚原因,但是“丸子”测试了其他0-13的数字,最终结果如下:

其中:OP表示Opera,SA表示Safari,Ch表示Chrome;当然你如果还有耐心可以测试“\14”,“\15”,“\16”。。。
从上面测试结果我们可以看出“\0”的写法只被IE8识别,ie6,ie7都不能识别,那么“\0”应该是IE8的真正hack。主流浏览器的CSS hack这样更好一些:
(转载请注明出处:WEB前端开发 http://www.css88.com/)
.test{
color:#000000; /* FF,OP支持 */
color:#0000FF\0; /* IE8支持*/
[color:#000000;color:#00FF00; /* SF,CH支持 */
*color:#FFFF00; /* IE7支持 */
_color:#FF0000; /* IE6支持 */
}
其中:OP表示Opera,SA表示Safari,Ch表示Chrome;

产品如何进行网络营销?

2013-03-21 , IT观察   

很多人会问我,你是怎么对一个产品进行定位。你会通过哪些方法进行包装推广让企业收益。自己在混迹互联网那么长时间也给不少的企业做过网络营销上的服务,好坏参半。网络营销产品的推广定位,我对其总结6步。

  A.产品定位,你所要推广的产品到底是一款什么样的产品?你的产品的成本是多少?你的产品所对应的适应人群是怎么样?三句简单的疑问足以概括对产品定位的理解。产品是多种多样的,如果我从事的是教育行业,我打算推广学校新研发的一门课程,我必须考虑该课程的内容,课程的成本价格,究竟要招多少生才能保证开资平衡。而收益我们该课程的群体大概是怎么样的?是高中生?大学生?成年人?未成年人?

  分析与计划,定位是执行的开始,分析与计划是执行的大纲。在目前的商业经济只要有需求既然会存在市场,有市场必然存在竞争。如何去分析我们的同行提升我们自身的核心竞争力是我们做计划的前提。

  B.市场调研,传统的市场调研无非会让企业对高额的成本表示无奈,目前有几种非常有效并且低成本的方法可以帮助我们去做市场调研。

  1、搜索工具。目前在谷歌消失的这几年,百度老大哥的地位无法撼,百度自身开发的一些列工具也算是日益完善。有搜索的地方就存在商机。用搜索工具去分析,如:指数工具、百度关键词工具等。

  2、电商平台。土地都可以在淘宝上拍卖了,何况是企业简单的产品。打开淘宝,将自己的产品放置搜索框搜索,查看一下购买次数和商家,往往数据越高的其需求也不低。

  3、同行刺激。去网络上随便点几个相关网站,看看是否有相应同行的广告,对方的广告投放是高是低?是多少少?次数是频是繁?利用2~3天的时间段去分析,很快便能得到相应的数据。

  C.平台选择和策略方法。一个好的平台往往能让其在营销和推广上事倍功半,我是从事教育行业的网络营销,在早期当地的人才网还没有什么人投放广告的时候,只需一条简短的文字都可以带来颠覆式的效果。

  1、搜索平台,百万数据如何细分和精准化?搜索引擎未来10年、20年、乃至N年的方向。庞大的数据没人会那么有耐心的去看完每一个字、每一句话、每一页,精准搜索作为精准推广的首选应该对于企业、对于个人都是属于转化比较快速的方式方法。

  2、B2B平台,如果你的企业从事的是B2B方向,在一些比较牛X一点的平台上推广效果肯定会有,至于多少还在于个人产品的优势和推广的模式是否多元话。

  3、分类平台,我很喜欢一句广告语:58同城是一个神奇的网站。

  4、微博平台,目前网络上炒最火的我想微博应该属于第一,315的CCAV和大V事件现在还在微博上疯传,所占据的群体也是十分庞大的,不过最近发现微博来喜欢玩什么微博强推的,个人建议在市场未认可的情况下,强扭的瓜真的不甜。

  5、软文,形软而意不软 我前就写过这样子的文章,怎么去写软文,怎么去做推广,怎么去做执行。用合理的文字去抓住那些欣赏你的人,结果自然不会差。

  当然,这年头的策略可谓是数不胜数,比如QQ群啊,sns啊,视频啊等等。不过越是传统越是最能迎合大众的需求,谁让杜子健老师曾经说过“如果你相信世界上有85%的正常人,那有15%的白痴你也不觉得多”。我们只给85%的正常人看。方法也一样,选择合适的平台去推广,总结出自己的策略去执行,结果就让时间来等待。

  D、策略执行和分析。平台选择好,选择一个好的策略,好比说我现在可能是要做一个新公司的推广,互联网上压根就没有我们的任何信息,首选权重高的一些网页进行相关信息的大范围发布,让好的、新的信息能能够在最短的时间内收录。我还可以考虑到每天加QQ群10个,没个QQ群都要互动。每天发布外链多少条让网站有排名等等。分析数据是关键,最简单的办法就是每天把自己所做的用截图保存起来做成excle。每周发一份周报,安装好站长统计工具即可。

  E、微调、总结、分析。随着推广的渐入佳境,微调策略、方法、工作量很有必要。每周做好总结,查看推广完成进度和效果,学会分析。效果自然不会差。

  5点推广产品的一个简单的流程,不仅仅是自己的总结,也是自己的分享,任何一个产品、一家公司、一个方案都离不开这5点。好的东西需要分享。

网站盈利模式探析

2013-03-15 , CakePHP   

  在上面的图表中,我将网站盈利的大致方式大致总结为五类:

  第一类是免费+广告。这种方式比较多见,应用免费,里面附带一些广告,广告形式有传统的Banner,也包括积分墙或是交叉推广,用你的流量换取广告的费用。

  第二类是免费但是功能有限。用户付钱才能得到更好的功能或服务,这是免费-增值模式。

  第三类是直接付费,这是销售中最常见的货币化方法。

  第四类是付费增值,应用本身就是收费的,用户需要更高层级的功能还要付费。

互联网上最近有什么赚钱项目

2013-03-15 , IT观察   

这个标题,估计网上很泛滥。铺天盖地教你如何赚钱。没意思。下面这段文字,是教你发现网上赚钱的项目。希望你看过之后,如果感觉有收获,不妨留言一下。

这几年,互联网的创业者,可以说是野蛮生长,闷声赚大钱的人大有人在。如果是要十年赚3000万,第一年至少要100万了,因为财富的增长,只要自己稍微理性一点,不至于年年都一样,会显增长趋势。

  好了,那么靠互联网赚钱,什么项目利润高,或者说暴利呢?

  暴利的项目,往往跟人的欲望和烦恼相关,因为人的一生就是在不断的满足欲望和摆脱烦恼。

  暴利的项目可以归结为:

  1、男人好色类

  在美国,色情行业可是一个巨大的行业。

  但是在中国就受限法律法归,但是你也有不少满足男人色欲的产品,比如《泡妞秘籍》,提升自我形象的产品,成人情趣用品,壮阳等增强性功能的药物等。其实中国的酒店业也深深的收益。

  只要你去中国的广告联盟看看,成人用品的商城,佣金都是最高的,这也间接的说明了这些产品的暴利性。高佣金,自然也保证了他们的推广渠道的丰富性,保证了销售额。

  但是千万不要做损人利己的事情啊。

  2、女人爱美类

  女的爱美的天性,催生了无数中产业。美容,减肥,服装,形象设计顾问,化妆品,整容等。

  跟爱美相关的行业的广告,几乎无孔不入,地铁,电视,报纸,门户网站,百度竞价,他们从不吝啬广告的投入,因为女人太多了,再美的女人,都有缺陷,比如年龄,美丽的追求是无止尽的。

  过去几年,靠减肥用品,做OEM,复制单页销售页做竞价赚到钱的人很多,包括现在。这些产品的利润太高了,胖MM,哪怕不怎么胖又觉得自己胖的MM也太多了,所以至今还很多人在做,甘蔗最甜的部分已经没有了,但依然很甜。

  3、儿童益智类

  现在大部分都是独生子女家庭,对于孩子的前途当然是非常的在意,所以不能够让孩子输在起跑线上。

  儿童英语,儿童艺术培训,早教的机器,儿童智商开发等相关产品,价格都非常高,你价格低了,还不一定卖得出去,家长选择的时候可是非常慎重的,但是有一个潜意识的认知,高价代表质量。现在的幼儿园都贵过上大学了。

  4、老人健康类

  现在的老人的健康类用品,其实目标顾客是年轻人,因为现在的年轻人,大多在外打拼,留下了很多空巢的老人夫妇。

  所以年轻人的愧疚感,只能够用物质来弥补,老人家多半身体都有各种各样的问题,就算身体健康,衣食住行的基本需要,也得满足,比如冬天要穿暖和的衣服啊,但是孝顺不能打折啊,你送礼怎么好意思挑廉价的商品呢?

  5、技能培训类

  这个类别需求也很旺盛,因为能力提升了,就更有机会提高待遇,男人更有钱泡妞,女人更有钱整容瘦身,家长更有钱帮助儿女学习,也可以有钱孝敬父母。

  这个类就够多选择了,网上做技能培训前,到处都是,做网络的,SEO,淘宝,编程,竞价等培训数不过来,更何况还有其他很多行业。

  在网上做培训类产品的好出去,就是成本低,比如你用电子书作为宣传途径,培训前先收益,然后推荐更高价的课程。现在网络培训渐渐兴起,YY的出现,帮助不少教师开拓了新的财路。

  培训类的商品,不一定需要一定的绝活。

  你可以只买电子教材,不要怕复制盗版,你要设置后端产品,比如教师一对一服务,或者学员内部QQ学习群等,这些是不能够复制的。你要是能够通过买电子教材,搞来一批学习欲望很强的学员准名单,跟其他的有绝活的讲师合作,不是一件难事。

  说来这么多利润高的行业,有点虚,那就再讲一些操作的内容吧:

  做一个互联网项目,必须先考虑这三个因素:市场,产品,营销。

  首先你的看看这个市场大不大?竞争激不激烈。

  怎么找合适单位市场呢?很多网站可以提供参考数据,比如淘宝当当卓越京东,还可以看看这几年的畅销书,都是那些方面的书籍比较热销。

  还有就是百度指数和淘宝指数的相关数据单位参考。

  找到一个市场,你在看看这个市场的对手营销能力强不强,比如广告页面的水平,图片拍摄的水平,还可以对做的比较大几家的客服人员进行调戏,看看他们的客服话术如何?

  如果你发现有几家各方面都做的不是特别好,但是依然销售情况很客观就说明这个市场非常容易做。

  然后就是考虑如何做营销。

  很简单,自己不要去创新,去用百度搜索相关的热词,观察一个星期,看看那些广告,是能够持续投放一个星期的,说明他们的模式是赚钱的趋势,你就可以去模仿他们的页面设计,包括文案,图片,客户见证,搭配套餐,支付方式等。

  除了网页方面单位,你还要去打电话假装去购买,最好是进行电话录音器,把他们的销售话术整理出来。

  当然自己不怕费钱,最好可以真实的购买一次,把对方的销售流程和售后服务也了解一下。

  复制是为了降低风险,真正在做的时候,如果你要创新,可以小范围的测试,比如你做一个新的销售单页,在某个城市进行投放,看看效果跟模仿的页面的效果那个更好,然后在一点点的扩大测试范围。如果测试效果不佳,果断中止。

  同样各个投放渠道的效果也要测试,比如百度和Google的广告,新浪等门户的广告,看看那个效果最佳,然后把大量的推广投入到最好的渠道上。

  最后才是产品。为什么最后才考虑产品呢?因为前面的两个步骤不需要花什么钱,要花钱的都涉及到风险。

  产品的获得途径很多,最简单的是代理,这个利润低一点,但是风险较低,也可以自己OEM,去找阿里巴巴的商户帮你生产。如果你卖的是知识产品,可以自己制作,比如电子书,培训视频等,近乎零成本,可以无限复制。

  如果你启动资金不高,知识产品是首选,因为这类产品价值高成本低,需求大,开发周期短缺。

  如果你没有绝活,制作不出好的知识产品,你可以找国外的销售高的电子书,雇大学生帮你翻译。或者整理同类知识的畅销书的能融洽,重新整合,找威客或者大学生帮你转成电子版,然后制作成电子书。

  整理完一遍,估计你自己也变高手了。比如你对网络营销感兴趣,可以整理一本《互联网营销宝典》,免费提供前几章,在试读版加上完整版的广告,有人购买的时候,收集他们的邮箱地址,靠卖电子书赚钱不长久前,迟早会网上到处都是下载资源。不过当你的教程到处都是的时候,是好事啊,你也发达了,因为教材里面也可以嵌入软广告的。

  书中介绍的很多方法,可能需要使用到某些工具,你制作电子书的时候,要有意识的强调,然后你可以找这些工具的团队合作,发送邮件广告。

  其实100万一年也不难吧,一天3000元的净利润而已。你前期测试成功一个项目,比如日赚500,在测试成功的基础上,然后广告力度翻倍,收入就翻倍了,然后再测试再翻倍。等赚的钱多了,觉得一个项目不够,那就继续找项目,用类似的方式,测试,优化,放大。

  做互联网的项目,切记赢了再打,先确定已经有别人可以保证赚钱,自己再复制,然后再小范围创新,放大或停止。创业有风险,花钱需谨慎。

  巴拉巴拉了这么多,我的经验告诉我,跟我一样只会长篇大论不做实事的人,再好再靠谱的思路,都是扯蛋,真正马上行动,有执行力的人,才可以赚到钱。

Mysql 查询日期大全

2013-03-13 , MySQL   

对于每个类型拥有的值范围以及并且指定日期何时间值的有效格式的描述见7.3.6 日期和时间类型。
今天 select * from 表名 where to_days(时间字段名) = to_days(now());
昨天 SELECT * FROM 表名 WHERE TO_DAYS( NOW( ) ) – TO_DAYS( 时间字段名) <= 1
7天 SELECT * FROM 表名 where DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= date(时间字段名)
近30天 SELECT * FROM 表名 where DATE_SUB(CURDATE(), INTERVAL 30 DAY) <= date(时间字段名)
本月 SELECT * FROM 表名 WHERE DATE_FORMAT( 时间字段名, ‘%Y%m’ ) = DATE_FORMAT( CURDATE( ) , ‘%Y%m’ )
上一月 SELECT * FROM 表名 WHERE PERIOD_DIFF( date_format( now( ) , ‘%Y%m’ ) , date_format( 时间字段名, ‘%Y%m’ ) ) =1
查询本周记录
select * from ht_invoice_information where WEEKOFYEAR(create_date)=WEEKOFYEAR(NOW());
#查询上周记录
select * from ht_invoice_information where create_date>=date_add(now(),interval -(8 + weekday(now())) day)
and create_date<=date_add(now(),interval -(1 + weekday(now())) day);
#或者
select * from `ht_invoice_information` where WEEKOFYEAR(create_date)=WEEKOFYEAR(DATE_SUB(now(),INTERVAL 1 week));
#查询本月数据
select * from ht_invoice_information where MONTH(create_date)=MONTH(NOW()) and year(create_date)=year(now());
#查询上月数据
select * from ht_invoice_information where create_date<=last_day(date_add(now(),interval -1 MONTH))
and create_date>=DATE_FORMAT(concat(extract(year_month from date_add(now(),interval -1 MONTH)),’01′),’%Y-%m-%d’);
#或者
select * from `ht_invoice_information` where MONTH(create_date)=MONTH(DATE_SUB(NOW(),interval 1 month))
and year(create_date)=year(now());
#查询本季度数据
select * from `ht_invoice_information` where QUARTER(create_date)=QUARTER(now());
#查询上季度数据
select * from `ht_invoice_information` where QUARTER(create_date)=QUARTER(DATE_SUB(now(),interval 1 QUARTER));
#查询本年数据
select * from `ht_invoice_information` where YEAR(create_date)=YEAR(NOW());
#查询上年数据
select * from `ht_invoice_information` where year(create_date)=year(date_sub(now(),interval 1 year));

这里是一个使用日期函数的例子。下面的查询选择了所有记录,其date_col的值是在最后30天以内:

mysql> SELECT something FROM table
WHERE TO_DAYS(NOW()) – TO_DAYS(date_col) select DAYOFWEEK(’1998-02-03′);
-> 3

WEEKDAY(date)
返回date的星期索引(0=星期一,1=星期二, ……6= 星期天)。
mysql> select WEEKDAY(’1997-10-04 22:23:00′);
-> 5
mysql> select WEEKDAY(’1997-11-05′);
-> 2

DAYOFMONTH(date)
返回date的月份中日期,在1到31范围内。
mysql> select DAYOFMONTH(’1998-02-03′);
-> 3

DAYOFYEAR(date)
返回date在一年中的日数, 在1到366范围内。
mysql> select DAYOFYEAR(’1998-02-03′);
-> 34

MONTH(date)
返回date的月份,范围1到12。
mysql> select MONTH(’1998-02-03′);
-> 2

DAYNAME(date)
返回date的星期名字。
mysql> select DAYNAME(“1998-02-05″);
-> ‘Thursday’

MONTHNAME(date)
返回date的月份名字。
mysql> select MONTHNAME(“1998-02-05″);
-> ‘February’

QUARTER(date)
返回date一年中的季度,范围1到4。
mysql> select QUARTER(’98-04-01′);
-> 2

WEEK(date)
 
WEEK(date,first)
对于星期天是一周的第一天的地方,有一个单个参数,返回date的周数,范围在0到52。2个参数形式WEEK()允许
你指定星期是否开始于星期天或星期一。如果第二个参数是0,星期从星期天开始,如果第二个参数是1,
从星期一开始。
mysql> select WEEK(’1998-02-20′);
-> 7
mysql> select WEEK(’1998-02-20′,0);
-> 7
mysql> select WEEK(’1998-02-20′,1);
-> 8

YEAR(date)
返回date的年份,范围在1000到9999。
mysql> select YEAR(’98-02-03′);
-> 1998

HOUR(time)
返回time的小时,范围是0到23。
mysql> select HOUR(’10:05:03′);
-> 10

MINUTE(time)
返回time的分钟,范围是0到59。
mysql> select MINUTE(’98-02-03 10:05:03′);
-> 5

SECOND(time)
回来time的秒数,范围是0到59。
mysql> select SECOND(’10:05:03′);
-> 3

PERIOD_ADD(P,N)
增加N个月到阶段P(以格式YYMM或YYYYMM)。以格式YYYYMM返回值。注意阶段参数P不是日期值。
mysql> select PERIOD_ADD(9801,2);
-> 199803

PERIOD_DIFF(P1,P2)
返回在时期P1和P2之间月数,P1和P2应该以格式YYMM或YYYYMM。注意,时期参数P1和P2不是日期值。
mysql> select PERIOD_DIFF(9802,199703);
-> 11

DATE_ADD(date,INTERVAL expr type)
 
DATE_SUB(date,INTERVAL expr type)
 
ADDDATE(date,INTERVAL expr type)
 
SUBDATE(date,INTERVAL expr type)
这些功能执行日期运算。对于MySQL 3.22,他们是新的。ADDDATE()和SUBDATE()是DATE_ADD()和DATE_SUB()的同义词。
在MySQL 3.23中,你可以使用+和-而不是DATE_ADD()和DATE_SUB()。(见例子)date是一个指定开始日期的
DATETIME或DATE值,expr是指定加到开始日期或从开始日期减去的间隔值一个表达式,expr是一个字符串;它可以以
一个“-”开始表示负间隔。type是一个关键词,指明表达式应该如何被解释。EXTRACT(type FROM date)函数从日期
中返回“type”间隔。下表显示了type和expr参数怎样被关联: type值 含义 期望的expr格式
SECOND 秒 SECONDS
MINUTE 分钟 MINUTES
HOUR 时间 HOURS
DAY 天 DAYS
MONTH 月 MONTHS
YEAR 年 YEARS
MINUTE_SECOND 分钟和秒 “MINUTES:SECONDS”
HOUR_MINUTE 小时和分钟 “HOURS:MINUTES”
DAY_HOUR 天和小时 “DAYS HOURS”
YEAR_MONTH 年和月 “YEARS-MONTHS”
HOUR_SECOND 小时, 分钟, “HOURS:MINUTES:SECONDS”
DAY_MINUTE 天, 小时, 分钟 “DAYS HOURS:MINUTES”
DAY_SECOND 天, 小时, 分钟, 秒 “DAYS HOURS:MINUTES:SECONDS”

MySQL在expr格式中允许任何标点分隔符。表示显示的是建议的分隔符。如果date参数是一个DATE值并且你的计算仅仅
包含YEAR、MONTH和DAY部分(即,没有时间部分),结果是一个DATE值。否则结果是一个DATETIME值。

mysql> SELECT “1997-12-31 23:59:59″ + INTERVAL 1 SECOND;
-> 1998-01-01 00:00:00
mysql> SELECT INTERVAL 1 DAY + “1997-12-31″;
-> 1998-01-01
mysql> SELECT “1998-01-01″ – INTERVAL 1 SECOND;
-> 1997-12-31 23:59:59
mysql> SELECT DATE_ADD(“1997-12-31 23:59:59″,
INTERVAL 1 SECOND);
-> 1998-01-01 00:00:00
mysql> SELECT DATE_ADD(“1997-12-31 23:59:59″,
INTERVAL 1 DAY);
-> 1998-01-01 23:59:59
mysql> SELECT DATE_ADD(“1997-12-31 23:59:59″,
INTERVAL “1:1″ MINUTE_SECOND);
-> 1998-01-01 00:01:00
mysql> SELECT DATE_SUB(“1998-01-01 00:00:00″,
INTERVAL “1 1:1:1″ DAY_SECOND);
-> 1997-12-30 22:58:59
mysql> SELECT DATE_ADD(“1998-01-01 00:00:00″,
INTERVAL “-1 10″ DAY_HOUR);
-> 1997-12-30 14:00:00
mysql> SELECT DATE_SUB(“1998-01-02″, INTERVAL 31 DAY);
-> 1997-12-02
mysql> SELECT EXTRACT(YEAR FROM “1999-07-02″);
-> 1999
mysql> SELECT EXTRACT(YEAR_MONTH FROM “1999-07-02 01:02:03″);
-> 199907
mysql> SELECT EXTRACT(DAY_MINUTE FROM “1999-07-02 01:02:03″);
-> 20102

如果你指定太短的间隔值(不包括type关键词期望的间隔部分),MySQL假设你省掉了间隔值的最左面部分。例如,
如果你指定一个type是DAY_SECOND,值expr被希望有天、小时、分钟和秒部分。如果你象”1:10″这样指定值,
MySQL假设日子和小时部分是丢失的并且值代表分钟和秒。换句话说,”1:10″ DAY_SECOND以它等价于”1:10″ MINUTE_SECOND
的方式解释,这对那MySQL解释TIME值表示经过的时间而非作为一天的时间的方式有二义性。如果你使用确实不正确的日期,
结果是NULL。如果你增加MONTH、YEAR_MONTH或YEAR并且结果日期大于新月份的最大值天数,日子在新月用最大的天调整。

mysql> select DATE_ADD(’1998-01-30′, Interval 1 month);
-> 1998-02-28

注意,从前面的例子中词INTERVAL和type关键词不是区分大小写的。
TO_DAYS(date)
给出一个日期date,返回一个天数(从0年的天数)。
mysql> select TO_DAYS(950501);
-> 728779
mysql> select TO_DAYS(’1997-10-07′);
-> 729669

TO_DAYS()不打算用于使用格列高里历(1582)出现前的值。

FROM_DAYS(N)
给出一个天数N,返回一个DATE值。
mysql> select FROM_DAYS(729669);
-> ’1997-10-07′

TO_DAYS()不打算用于使用格列高里历(1582)出现前的值。

DATE_FORMAT(date,format)
根据format字符串格式化date值。下列修饰符可以被用在format字符串中: %M 月名字(January……December)
%W 星期名字(Sunday……Saturday)
%D 有英语前缀的月份的日期(1st, 2nd, 3rd, 等等。)
%Y 年, 数字, 4 位
%y 年, 数字, 2 位
%a 缩写的星期名字(Sun……Sat)
%d 月份中的天数, 数字(00……31)
%e 月份中的天数, 数字(0……31)
%m 月, 数字(01……12)
%c 月, 数字(1……12)
%b 缩写的月份名字(Jan……Dec)
%j 一年中的天数(001……366)
%H 小时(00……23)
%k 小时(0……23)
%h 小时(01……12)
%I 小时(01……12)
%l 小时(1……12)
%i 分钟, 数字(00……59)
%r 时间,12 小时(hh:mm:ss [AP]M)
%T 时间,24 小时(hh:mm:ss)
%S 秒(00……59)
%s 秒(00……59)
%p AM或PM
%w 一个星期中的天数(0=Sunday ……6=Saturday )
%U 星期(0……52), 这里星期天是星期的第一天
%u 星期(0……52), 这里星期一是星期的第一天
%% 一个文字“%”。

所有的其他字符不做解释被复制到结果中。

mysql> select DATE_FORMAT(’1997-10-04 22:23:00′, ‘%W %M %Y’);
-> ‘Saturday October 1997′
mysql> select DATE_FORMAT(’1997-10-04 22:23:00′, ‘%H:%i:%s’);
-> ’22:23:00′
mysql> select DATE_FORMAT(’1997-10-04 22:23:00′,
‘%D %y %a %d %m %b %j’);
-> ’4th 97 Sat 04 10 Oct 277′
mysql> select DATE_FORMAT(’1997-10-04 22:23:00′,
‘%H %k %I %r %T %S %w’);
-> ’22 22 10 10:23:00 PM 22:23:00 00 6′
MySQL3.23中,在格式修饰符字符前需要%。在MySQL更早的版本中,%是可选的。

TIME_FORMAT(time,format)
这象上面的DATE_FORMAT()函数一样使用,但是format字符串只能包含处理小时、分钟和秒的那些格式修饰符。
其他修饰符产生一个NULL值或0。
CURDATE()
 
CURRENT_DATE
以’YYYY-MM-DD’或YYYYMMDD格式返回今天日期值,取决于函数是在一个字符串还是数字上下文被使用。
mysql> select CURDATE();
-> ’1997-12-15′
mysql> select CURDATE() + 0;
-> 19971215

CURTIME()
 
CURRENT_TIME
以’HH:MM:SS’或HHMMSS格式返回当前时间值,取决于函数是在一个字符串还是在数字的上下文被使用。
mysql> select CURTIME();
-> ’23:50:26′
mysql> select CURTIME() + 0;
-> 235026

NOW()
 
SYSDATE()
 
CURRENT_TIMESTAMP
以’YYYY-MM-DD HH:MM:SS’或YYYYMMDDHHMMSS格式返回当前的日期和时间,取决于函数是在一个字符串还是在数字的
上下文被使用。
mysql> select NOW();
-> ’1997-12-15 23:50:26′
mysql> select NOW() + 0;
-> 19971215235026

UNIX_TIMESTAMP()
 
UNIX_TIMESTAMP(date)
如果没有参数调用,返回一个Unix时间戳记(从’1970-01-01 00:00:00′GMT开始的秒数)。如果UNIX_TIMESTAMP()用一
个date参数被调用,它返回从’1970-01-01 00:00:00′ GMT开始的秒数值。date可以是一个DATE字符串、一个DATETIME
字符串、一个TIMESTAMP或以YYMMDD或YYYYMMDD格式的本地时间的一个数字。
mysql> select UNIX_TIMESTAMP();
-> 882226357
mysql> select UNIX_TIMESTAMP(’1997-10-04 22:23:00′);
-> 875996580

当UNIX_TIMESTAMP被用于一个TIMESTAMP列,函数将直接接受值,没有隐含的“string-to-unix-timestamp”变换。

FROM_UNIXTIME(unix_timestamp)
以’YYYY-MM-DD HH:MM:SS’或YYYYMMDDHHMMSS格式返回unix_timestamp参数所表示的值,取决于函数是在一个字符串
还是或数字上下文中被使用。
mysql> select FROM_UNIXTIME(875996580);
-> ’1997-10-04 22:23:00′
mysql> select FROM_UNIXTIME(875996580) + 0;
-> 19971004222300

FROM_UNIXTIME(unix_timestamp,format)
返回表示 Unix 时间标记的一个字符串,根据format字符串格式化。format可以包含与DATE_FORMAT()函数列出的条
目同样的修饰符。
mysql> select FROM_UNIXTIME(UNIX_TIMESTAMP(),
‘%Y %D %M %h:%i:%s %x’);
-> ’1997 23rd December 03:43:30 x’

SEC_TO_TIME(seconds)
返回seconds参数,变换成小时、分钟和秒,值以’HH:MM:SS’或HHMMSS格式化,取决于函数是在一个字符串还是在数字
上下文中被使用。
mysql> select SEC_TO_TIME(2378);
-> ’00:39:38′
mysql> select SEC_TO_TIME(2378) + 0;
-> 3938

TIME_TO_SEC(time)
返回time参数,转换成秒。
mysql> select TIME_TO_SEC(’22:23:00′);
-> 80580
mysql> select TIME_TO_SEC(’00:39:38′);
-> 2378

—————————————————————————————————————————

mysql日期处理函数

mysql日期处理函数

mysql自己有格式化日期格式的函数,可以在查询语句中使用
DATE_FORMAT(date,format)
根据format字符串格式化date值。下列修饰符可以被用在format字符串中: %M 月名字(January……December)
%W 星期名字(Sunday……Saturday)
%D 有英语前缀的月份的日期(1st, 2nd, 3rd, 等等。)
%Y 年, 数字, 4 位
%y 年, 数字, 2 位
%a 缩写的星期名字(Sun……Sat)
%d 月份中的天数, 数字(00……31)
%e 月份中的天数, 数字(0……31)
%m 月, 数字(01……12)
%c 月, 数字(1……12)
%b 缩写的月份名字(Jan……Dec)
%j 一年中的天数(001……366)
%H 小时(00……23)
%k 小时(0……23)
%h 小时(01……12)
%I 小时(01……12)
%l 小时(1……12)
%i 分钟, 数字(00……59)
%r 时间,12 小时(hh:mm:ss [AP]M)
%T 时间,24 小时(hh:mm:ss)
%S 秒(00……59)
%s 秒(00……59)
%p AM或PM
%w 一个星期中的天数(0=Sunday ……6=Saturday )
%U 星期(0……52), 这里星期天是星期的第一天
%u 星期(0……52), 这里星期一是星期的第一天
%% 一个文字“%”。

如需要用php处理,可先用strtotime函数将日期转换为unix时间戳,再用date函数格式化