MySql中时间比较的达成,MySQL数据库中国和东瀛期与时光函数UNIX_TIME

MySQL中:

mysql时间戳的取得

日子戳函数:current_timestamp()

 997755.com澳门葡京 1

在此岗位添加时间戳函数。

下一场全体的写法便是下图那样:

 997755.com澳门葡京 2

基于当前时光戳更新有没有打钩将控制你的时刻是怎么样时间(多个是数码形成写入的时日,3个时刻戳回随时间变更而变更),所以基于须求写就好啊、

997755.com澳门葡京 3

如图为创制数量的大运,时间戳会永远展现创制第6栏结束的年月,。

997755.com澳门葡京 4

997755.com澳门葡京 5

根据近来时光戳更新点击对号后,表里的时间戳回随着岁月的转移而生成。

PS:只可以出现一个timestamp,出现三个的话会见世谬误提醒。

MySQL数据库中国和东瀛期与时光函数UNIX_TIME()与UNIX_TIMESTAMP()

MySql中时间比较的落到实处

now():获取当前时光;例:SELECT now();  //
结果:2018-07-03 13:40:14

代码MYSQL获取当前几日子代码

997755.com澳门葡京 , 

 

mysql 获取当前时光为select now()
运行结果:

2012-09-05 17:24:15

mysql 获取当今天子戳为select unix_timestamp(now()) 
运行结果:
unix_timestamp(now())
1346836984

 

select *  from fanwe_payment_notice where user_id=66586 and
is_paid=1 and
UNIX_TIMESTAMP(pay_date)>=unix_timestamp(now())-3600*24*12

 

 

 

mysql 把时光戳化为时间格式

 

SELECT FROM_UNIXTIMEMySql中时间比较的达成,MySQL数据库中国和东瀛期与时光函数UNIX_TIME。(1234567890);

SELECT FROM_UNIXTIME(1234567890,
‘%Y-%m-%d %H:%i:%S’)

 

select *
,FROM_UNIXTIME(vip_end_time),FROM_UNIXTIME(vip_end_time,”%Y-%m-%d
%H:%i:%S”) from fanwe_vip_buy_log

where user_id=66586 AND vip_buytime <=unix_timestamp(now()) AND
vip_end_time>=unix_timestamp(now())  order by id desc limit 1

 

 

unix_timestamp():将时间更换为时间戳;例: SELECT
unix_timestamp(now());  // 结果:1530596168

这几天写代码,反复用到将日期时间字段转化成数字串和日期格式字符串的意况,感觉温馨还处于壹知半解之中,索性花点时间查下相关资料,基本弄了解了
MySQL 中七个常用的日子函数的用法,记录于此,作为笔记供参考。

unix_timestamp
函数能够承受2个参数,也得以不利用参数。它的重回值是一个无符号的整数。不选用参数,它回到自一九六六年5月八日0时0分0秒到现行反革命所通过的秒数,要是运用参数,参数的项目为时间档次恐怕时间项目标字符串表示,则是从1966-01-01
00:00:00到钦赐时间所经历的秒数。有了那么些函数,就能够很当然地把时间相比较转换为一个无符号整数的可比。 

 

 

 

 

1、FROM_UNIXTIME( unix_timestamp ) 

比如,判断一个光阴是还是不是在一个距离内 

 

参数:日常是3个十个人的数字,如:1344887103 

 

再次来到值:有三种,恐怕是接近 ‘YYYY-MM-DD HH:MM:SS’
那样的字符串,也有也许是相仿于 YYYYMMDDHHMMSS.uuuuuu
那样的数字,具体再次回到什么取决于该函数被调用的款型。 

unix_timestamp( time ) between unix_timestamp( ‘start ‘) and
unix_timestamp( ‘end’ ) 

1  www.2cto.com  

 

mysql> select FROM_UNIXTIME(1344887103);

对此每一种门类拥有的值范围以及并且内定日期曾几何时间值的卓有作用格式的描述见7.3.17日期和岁月档次。  

2

 

+—————————+

此地是2个运用日期函数的事例。上面包车型大巴询问选用了装有记录,其date_col的值是在最后30天之内:  

3

 

| FROM_UNIXTIME(1344887103) |

mysql> SELECT something FROM table  

4

WHERE TO_DAYS(NOW()) – TO_DAYS(date_col) <= 30;  

+—————————+

 

5

DAYOFWEEK(date)  

| 2012-08-14 03:45:03       |

回到日期date的星期索引(1=星期日,2=星期六,
……7=星期一)。这几个索引值对应于ODBC标准。  

6

mysql> select DAYOFWEEK(‘1998-02-03’);  

+—————————+

-> 3  

7

 

1 row in set (0.00 sec)
 

WEEKDAY(date)  

2、FROM_UNIXTIME( unix_timestamp ,format ) 

回到date的星期索引(0=礼拜一,1=星期天, ……6= 周天)。  

参数 unix_timestamp :与方法 FROM_UNIXTIME( unix_timestamp )
中的参数含义一样; 

mysql> select WEEKDAY(‘1997-10-04 22:23:00’);  

参数 format : 转换之后的流年字符串突显的格式; 

-> 5  

重返值:依照钦赐的小时格式突显的字符串; 

mysql> select WEEKDAY(‘1997-11-05’);  

01

-> 2  

mysql> select FROM_UNIXTIME(1344887103,’%Y-%M-%D %h:%i:%s’);

 

02

DAYOFMONTH(date)  

+———————————————–+

归来date的月份中国和东瀛期,在1到31限制内。  

03  www.2cto.com  

mysql> select DAYOFMONTH(‘1998-02-03’);  

| FROM_UNIXTIME(1344887103,’%Y-%M-%D %h:%i:%s’) |

-> 3  

04

 

+———————————————–+

DAYOFYEAR(date)  

05

重临date在一年中的日数, 在1到366限量内。  

| 2012-August-14th 03:45:03                     |

mysql> select DAYOFYEAR(‘1998-02-03’);  

06

-> 34  

+———————————————–+

 

07

MONTH(date)  

1 row in set (0.00 sec)

返回date的月份,范围1到12。  

08

mysql> select MONTH(‘1998-02-03’);  

mysql> select FROM_UNIXTIME(1344887103,’%Y-%m-%D %h:%i:%s’);

-> 2  

09

 

+———————————————–+

DAYNAME(date)  

10

回去date的礼拜名字。  

| FROM_UNIXTIME(1344887103,’%Y-%m-%D %h:%i:%s’) |

mysql> select DAYNAME(“1998-02-05”);  

11

-> ‘Thursday’  

+———————————————–+

 

12

MONTHNAME(date)  

| 2012-08-14th 03:45:03                         |

重返date的月份名字。  

13

mysql> select MONTHNAME(“1998-02-05”);  

+———————————————–+

-> ‘February’  www.2cto.com    

14

 

15

QUARTER(date)  

1 row in set (0.00 sec)

回去date一年中的季度,范围1到4。  

参照链接:

mysql> select QUARTER(’98-04-01′);  

 

-> 2  

1、UNIX_TIMESTAMP()

 

  www.2cto.com  

WEEK(date)  

再次来到值:当前时刻的UNIX格式数字串,可能说是 UNIX 时间戳(从 UTC
时间’一九六九-01-01 00:00:00’起初的秒数),日常为11位,如 1344887103。

 

 

WEEK(date,first)  

1

对于周六是七日的第②天的地点,有叁个单个参数,再次来到date的周数,范围在0到52。2个参数格局WEEK()允许
 

mysql> select unix_timestamp();

您钦命星期是还是不是开端于周二或星期天。若是第①个参数是0,星期从星期四起头,假设第一个参数是1,
 

2

从礼拜一发轫。  

+——————+

mysql> select WEEK(‘1998-02-20’);  

3

-> 7  

| unix_timestamp() |

mysql> select WEEK(‘1998-02-20’,0);  

4

-> 7  

+——————+

mysql> select WEEK(‘1998-02-20’,1);  

5

-> 8  

|       1344887103 |

 

6

YEAR(date)  

+——————+

返回date的年份,范围在1000到9999。  

7

mysql> select YEAR(’98-02-03′);  

1 row in set (0.00 sec)

-> 1998  

2、UNIX_TIMESTAMP( date ) 

 

参数:date 恐怕是个 DATE 字符串,DATETIME 字符串,TIMESTAPE
字符串,或然是1个像样于 YYMMDD 或然 YYYYMMDD 的数字串。 

HOUR(time)  

回到:从 UTC 时间’1970-01-01
00:00:00’早先到该参数之间的秒数。服务器将参数 date
解释成当下时区的贰个值并且将其转化成 UTC
格式的在那之中时间。客户端则足以活动设置当前时区。当 UNIX_TIMESTAMP()
用于1个 TIMESTAMP
列时,函数直接再次回到内部时间戳的值;即便你传递贰个超出范围的时辰到
UNIX_TIMESTAMP(),它的再次来到值是零。 

返回time的小时,范围是0到23。  

01  www.2cto.com  

mysql> select HOUR(’10:05:03′);  

mysql> SELECT UNIX_TIMESTAMP();

-> 10  

02

 

+——————+

MINUTE(time)  

03

返回time的分钟,范围是0到59。  

| UNIX_TIMESTAMP() |

mysql> select MINUTE(’98-02-03 10:05:03′);  

04

-> 5  

+——————+

 

05

SECOND(time)  

|       1344888895 |

回来time的秒数,范围是0到59。  

06

mysql> select SECOND(’10:05:03′);  

+——————+

-> 3  

07

 

1 row in set (0.00 sec)

PERIOD_ADD(P,N)  

08

扩大N个月到阶段P(以格式YYMM或YYYYMM)。以格式YYYYMM重临值。注意阶段参数P不是日期值。  

 

mysql> select PERIOD_ADD(9801,2);  

09

-> 199803  

mysql> SELECT UNIX_TIMESTAMP(‘2012-08-14 16:19:23’);

 

10

PERIOD_DIFF(P1,P2)  

+—————————————+

回到在一代P1和P2之间月数,P1和P2应该以格式YYMM或YYYYMM。注意,时代参数P1和P2不是日期值。  

11

mysql> select PERIOD_DIFF(9802,199703);  

| UNIX_TIMESTAMP(‘2012-08-14 16:19:23’) |

-> 11  

12

 

+—————————————+

DATE_ADD(date,INTERVAL expr type)  

13

 

|                            1344932363 |

DATE_SUB(date,INTERVAL expr type)  

14

 

+—————————————+

ADDDATE(date,INTERVAL expr type)  

15  www.2cto.com  

 

1 row in set (0.00 sec)

SUBDATE(date,INTERVAL expr type)  

留意:若是您使用 UNIX_TIMESTAMP() 和 FROM_UNIXTIME() 来转换 TIMESTAMP
值与 Unix
时间戳的值,精度会丢掉,因为这些映射在五个样子上不是各样对应的。比如说,由于地面时区的改变,有可能五个UNIX_TIMESTAMP() 会映射到同三个 Unix 时间戳的值。 FROM_UNIXTIME()
只会炫耀到原来的丰盛时刻戳的值上。那里有个例子,在 CET 时区使用
TIMESTAMP:

这一个作用实施日期运算。对于MySQL
3.22,他们是新的。ADDDATE()和SUBDATE()是DATE_ADD()和DATE_SUB()的同义词。
 

 

在MySQL
3.第23中学,你能够利用+和-而不是DATE_ADD()和DATE_SUB()。(见例子)date是一个钦赐早先日期的
 

01

DATETIME或DATE值,expr是钦定加到起来日期或从初步日期减去的间隔值二个表明式,expr是四个字符串;它能够以
 

mysql> SELECT UNIX_TIMESTAMP(‘2005-03-27 03:00:00’);

三个“-”先导表示负间隔。type是叁个第1词,指明表明式应该怎么被解释。EXTRACT(type
FROM date)函数从日期  

02

中回到“type”间隔。下表展现了type和expr参数怎么样被波及: type值 含义
期望的expr格式  

+—————————————+

 

03

SECOND 秒 SECONDS  

| UNIX_TIMESTAMP(‘2005-03-27 03:00:00’) |

MINUTE 分钟 MINUTES  

04

HOUR 时间 HOURS  

+—————————————+

DAY 天 DAYS  

05

MONTH 月 MONTHS  

|                            1111885200 |

YEAR 年 YEARS  

06

MINUTE_SECOND 分钟和秒 “MINUTES:SECONDS”  

+—————————————+

HOUR_MINUTE 小时和分钟 “HOUXC60S:MINUTES”  

07

DAY_HOU索罗德 天和小时 “DAYS HOU普拉多S”  

mysql> SELECT UNIX_TIMESTAMP(‘2005-03-27 02:00:00’);

YEAR_MONTH 年和月 “YEARS-MONTHS”  

08

HOUR_SECOND 小时, 分钟, “HOURS:MINUTES:SECONDS”  

+—————————————+

DAY_MINUTE 天, 小时, 分钟 “DAYS HOURS:MINUTES”  

09

DAY_SECOND 天, 小时, 分钟, 秒 “DAYS HOURS:MINUTES:SECONDS”  

| UNIX_TIMESTAMP(‘2005-03-27 02:00:00’) |

 

10

MySQL在expr格式中允许别的标点分隔符。表示突显的是建议的分隔符。要是date参数是1个DATE值并且你的总括仅仅
 

+—————————————+

包括YEAHighlander、MONTH和DAY部分(即,没有时间某些),结果是3个DATE值。不然结果是二个DATETIME值。  

11

 

|                            1111885200 |

mysql> SELECT “1997-12-31 23:59:59” + INTERVAL 1 SECOND;  

12

-> 1998-01-01 00:00:00   www.2cto.com   

+—————————————+

mysql> SELECT INTERVAL 1 DAY + “1997-12-31”;  

13

-> 1998-01-01  

mysql> SELECT FROM_UNIXTIME(1111885200);

mysql> SELECT “1998-01-01” – INTERVAL 1 SECOND;  

14  www.2cto.com  

-> 1997-12-31 23:59:59  

+—————————+

mysql> SELECT DATE_ADD(“1997-12-31 23:59:59”,  

15

INTERVAL 1 SECOND);  

| FROM_UNIXTIME(1111885200) |

-> 1998-01-01 00:00:00  

16

mysql> SELECT DATE_ADD(“1997-12-31 23:59:59”,  

+—————————+

INTERVAL 1 DAY);  

17

-> 1998-01-01 23:59:59  

| 2005-03-27 03:00:00       |

mysql> SELECT DATE_ADD(“1997-12-31 23:59:59”,  

18

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  

作者 Bairrfhoinn

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假设你省掉了间隔值的最右边部分。例如,
 

若果您钦赐2个type是DAY_SECOND,值expr被期待有天、时辰、分钟和秒部分。假如您象”1:10″那样钦命值,
 

MySQL倘使日子和时辰某个是遗失的同时值代表秒钟和秒。换句话说,”1:10″
DAY_SECOND以它等于于”1:10″ MINUTE_SECOND  

的法门诠释,那对那MySQL解释TIME值表示经过的年华而非作为一天的流年的措施有二义性。若是您利用确实不得法的日期,
 

结果是NULL。倘诺您扩大MONTH、YEAR_MONTH或YEA凯雷德并且结果日期大于新月份的最大值天数,日子在新月用最大的天调整。  

 

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

-> 1998-02-28  

 

留意,以前边的事例中词INTEKoleosVAL和type关键词不是分别轻重缓急写的。  

TO_DAYS(date)  

付出三个日期date,重回3个天数(从0年的造化)。  

mysql> select TO_DAYS(950501);  

-> 728779  

mysql> select TO_DAYS(‘1997-10-07’);  

-> 729669  

 

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

 

FROM_DAYS(N)  

交由二个时局N,再次回到3个DATE值。  

mysql> select FROM_DAYS(729669);  

-> ‘1997-10-07’  

 

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

 

DATE_FORMAT(date,format)  

听大人讲format字符串格式化date值。下列修饰符能够被用在format字符串中: %M
月名字(January……December)   www.2cto.com   

%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_FOCR-VMAT()函数一样选用,可是format字符串只可以分包处理时辰、分钟和秒的那几个格式修饰符。
 

别的修饰符发生二个NULL值或0。  

CURDATE()  

 

CURRENT_DATE  

以’YYYY-MM-DD’或YYYYMMDD格式重返后日日子值,取决于函数是在3个字符串依然数字上下文被运用。  

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格式重返当前的日子和岁月,取决于函数是在3个字符串照旧在数字的
   www.2cto.com  

上下文被接纳。  

mysql> select NOW();  

-> ‘1997-12-15 23:50:26’  

mysql> select NOW() + 0;  

-> 19971215235026  

 

UNIX_TIMESTAMP()  

 

UNIX_TIMESTAMP(date)  

借使没有参数调用,重返一个Unix时间戳记(从’1969-01-01
00:00:00’丙胺博莱霉素T初叶的秒数)。如果UNIX_TIMESTAMP()用一  

个date参数被调用,它回到从’一九六八-01-01 00:00:00′
欧霉素T开头的秒数值。date能够是1个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   www.2cto.com   

 

FROM_UNIXTIME(unix_timestamp,format)  

再次回到表示 Unix
时间标记的3个字符串,依据format字符串格式化。format能够包括与DATE_FOCR-VMAT()函数列出的条
 

目同样的修饰符。  

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  

 

 

 

作者 晓风残月一九九〇

unix_timestamp
函数还不错壹个参数,也能够不使用参数。它的重回值是一个无符号的平头。不应用参数,它回到自…

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*
*
Website