Mysql函式表以及date函式的一些操作及用法
對於mysql和ms sql中提供了大量的對時間處理的函式;因為在實際的查詢操作中很多地方都存在對時間格式話的操作處理,所以這裡就拿mysql來說下如何去處理這些時間
mysql 部分date函式的使用:
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更早的版本中,%是可選的。 (具體更多的時間format格式請參考文章最後)
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
問題重放:
CREATE TABLE `test` (
`id` int(4) NOT NULL AUTO_INCREMENT,
`mydate` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
)
INSERT INTO `test` VALUES ('1', '2011-4-11 12:23:22');
INSERT INTO `test` VALUES ('2', '2011-4-11 12:21:22');
INSERT INTO `test`
INSERT INTO `test` VALUES ('4', '2011-4-10 12:18:22');
INSERT INTO `test` VALUES ('5', '2011-4-12 12:23:22');
INSERT INTO `test` VALUES ('6', '2011-4-11 11:23:22');
現在要統計出 每天的記錄條數,如: 2011-4-11 有3條記錄,2011-4-10有2條,2011-4-11有一條記錄。
可採用以下幾種方式處理:
方法一:時間函式處理方式
select Date(mydate),count(*)from test group by date(mydate)
或者使用select DATE_FORMAT(mydate,'%Y-%m-%d') ,count(*) from test group by DATE_FORMAT(mydate,'%Y-%m-%d')二者效果都是一樣的。
方法二:select mid(mydate,1,9),count(*) from test group by mid(mydate,1,9)
使用字串的切割。此方法有侷限性,其操作也不方便,不建議使用此方法
更多的sql處理函式可以查閱http://www.w3school.com.cn/sql/
×××××××××××××××××××××××××××××××××××××××××××××
//Format 時間格式:
%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), 這裡星期一是星期的第一天
//結束