重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
DATE_FORMAT(date,format)根据格式串format格式化日期或日期和时间值date,返回结果串。可用DATE_FORMAT()来格式化DATE或DATETIME值,以便得到所希望的格式。根据format字符串格式化date值:%S,%s两位数字形式的秒(00,01,...,59)%i两位数字形式的分(00,01,...,59)%H两位数字形式的小时,24小时(00,01,...,23)%h,%I两位数字形式的小时,12小时(01,02,...,12)%k数字形式的小时,24小时(0,1,...,23)%l数字形式的小时,12小时(1,2,...,12)%T24小时的时间形式(hh:mm:ss)%r12小时的时间形式(hh:mm:ssAM或hh:mm:ssPM)%pAM或PM%W一周中每一天的名称(Sunday,Monday,...,Saturday)%a一周中每一天名称的缩写(Sun,Mon,...,Sat)%d两位数字表示月中的天数(00,01,...,31)%e数字形式表示月中的天数(1,2,...,31)%D英文后缀表示月中的天数(1st,2nd,3rd,...)%w以数字形式表示周中的天数(0=Sunday,1=Monday,...,6=Saturday)%j以三位数字表示年中的天数(001,002,...,366)%U周(0,1,52),其中Sunday为周中的第一天%u周(0,1,52),其中Monday为周中的第一天%M月名(January,February,...,December)%b缩写的月名(January,February,...,December)%m两位数字表示的月份(01,02,...,12)%c数字表示的月份(1,2,...,12)%Y四位数字表示的年份%y两位数字表示的年份%%直接值“%”selectdate_format(日期字段,’%Y-%m-%d’)as‘日期’fromtest
我们拥有10余年网页设计和网站建设经验,从网站策划到网站制作,我们的网页设计师为您提供的解决方案。为企业提供成都网站设计、网站制作、微信开发、小程序开发、移动网站建设、H5网站设计、等业务。无论您有什么样的网站设计或者设计方案要求,我们都将富于创造性的提供专业设计服务并满足您的需求。
写过PHP+MySQL的程序员都知道有时间差,UNIX时间戳和格式化日期是我们常打交道的两个时间表示形式,Unix时间戳存储、处理方便,但是不直观,格式化日期直观,但是处理起来不如Unix时间戳那么自如,所以有的时候需要互相转换,下面给出互相转换的几种转换方式。
一、在MySQL中完成
这种方式在MySQL查询语句中转换,优点是不占用PHP解析器的解析时间,速度快,缺点是只能用在数据库查询中,有局限性。
1. UNIX时间戳转换为日期用函数: FROM_UNIXTIME()
一般形式:select FROM_UNIXTIME(1156219870);
2. 日期转换为UNIX时间戳用函数: UNIX_TIMESTAMP()
一般形式:Select UNIX_TIMESTAMP('2006-11-04 12:23:00′);
举例:mysql查询当天的记录数:
$sql=”select * from message Where DATE_FORMAT(FROM_UNIXTIME(chattime),'%Y-%m-%d') = DATE_FORMAT(NOW(),'%Y-%m-%d') order by id desc”;
当然大家也可以选择在PHP中进行转换,下面说说在PHP中转换。
二、在PHP中完成
这种方式在PHP程序中完成转换,优点是无论是不是数据库中查询获得的数据都能转换,转换范围不受限制,缺点是占用PHP解析器的解析时间,速度相对慢。
1. UNIX时间戳转换为日期用函数: date()
一般形式:date('Y-m-d H:i:s', 1156219870);
2. 日期转换为UNIX时间戳用函数:strtotime()
一般形式:strtotime('2010-03-24 08:15:42');
用正则表达式选择出来,然后用函数str_to_date来转换
update table_name set release_date = STR_TO_DATE(REPLACE(release_date,' ',''),'%d %M %Y @') where release_date REGEXP'^[0-9]{1,2}.*[July|Janurary|February|May|June|July|August|September|October|November|December|March].*@.*[0-9]$';
其他的类似哦
从mysql搬一个大表到redis中,你会发现在提取、转换或是载入一行数据时,速度慢的让你难以忍受。这里我就要告诉一个让你解脱的小技巧。使用“管道输出”的方式把mysql命令行产生的内容直接传递给redis-cli,以绕过“中间件”的方式使两者在进行数据操作时达到最佳速度。
一个约八百万行数据的mysql表,原本导入到redis中需要90分钟,使用这个方法后,只需要两分钟。不管你信不信,反正我是信了。
Mysql到Redis的数据协议
redis-cli命令行工具有一个批量插入模式,是专门为批量执行命令设计的。这第一步就是把Mysql查询的内容格式化成redis-cli可用的数据格式。here we go!
我的统计表:
?1234567 CREATE TABLE events_all_time ( id int(11) unsigned NOT NULL AUTO_INCREMENT, action varchar(255) NOT NULL, count int(11) NOT NULL DEFAULT 0, PRIMARY KEY (id), UNIQUE KEY uniq_action (action) );准备在每行数据中执行的redis命令如下:
HSET events_all_time [action] [count]
按照以上redis命令规则,创建一个events_to_redis.sql文件,内容是用来生成redis数据协议格式的SQL:
-- events_to_redis.sql
?12345678910111213141516171819 SELECT CONCAT( "*4\r\n", '$', LENGTH(redis_cmd), '\r\n', redis_cmd, '\r\n', '$', LENGTH(redis_key), '\r\n', redis_key, '\r\n', '$', LENGTH(hkey), '\r\n', hkey, '\r\n', '$', LENGTH(hval), '\r\n', hval, '\r') FROM ( SELECT 'HSET' as redis_cmd, 'events_all_time' AS redis_key, action AS hkey, count AS hval FROM events_all_time ) AS tok, 用下面的命令执行:
?1 mysql stats_db --skip-column-names --raw events_to_redis.sql | redis-cli --pipe很重要的mysql参数说明:
1.--raw: 使mysql不转换字段值中的换行符。
2.--skip-column-names: 使mysql输出的每行中不包含列名。