mysql中sysdate函数转字符串_MySQL常用日期函数
SELECT
now(),
sysdate(),
CURRENT_TIMESTAMP,
CURRENT_TIMESTAMP (),
sleep(1),
now(),
sysdate(),
CURRENT_TIMESTAMP,
CURRENT_TIMESTAMP ()
结果大概如下:
用的最多的就是no
当前时间 SELECT now(), sysdate(), CURRENT_TIMESTAMP, CURRENT_TIMESTAMP (), sleep(1), now(), sysdate(), CURRENT_TIMESTAMP, CURRENT_TIMESTAMP () 结果大概如下: 用的最多的就是now()函数了,CURRENT_TIMESTAMP主要是用在datetime类型作为默认值。sysdate()是一个实时的,而其他的在一个session中都是有缓存的。 日期转字符串 select date_format(now(), '%Y-%m-%d %H:%i:%s'); 这个函数使用主要看习惯,一般不会在数据库层做转换,而会放在应用层。但是很多人习惯将查询条件转换为字符串比较。比如Java中的util.Date类型和MySQL数据库中的datetime类型只是比较到天(某年某月某日)的时候很多人写的像下面这样: DATE_FORMAT(charge_date,"%Y-%m-%d") >= DATE_FORMAT(#{chargeDate}, '%Y-%m-%d') 其实这样因为字符串比较的原因,效率是比较低的。后面介绍效率高一些的方法。 字符串转日期 SELECT str_to_date('01/31/2018', '%m/%d/%Y'), str_to_date('01.31.2018', '%m.%d.%Y'), str_to_date( '01.31.2018 08/09/30', '%m.%d.%Y %h/%i/%s' ); 字符串转日期函数应该也是根据个人习惯的使用多少,这样就很多查询就只需要做一次转换就可以了。如果不是特别要求数据库层不能做转换的话,可以在应用层直接传字符串。 日期和天数转换 select to_days(now()),from_days(737090); to_days转换为天,from_days从天数得的日期。用的多的是to_days,对于datetime只比较到天数(日期),不比较时间的话完全可以使用to_days来完成。像下面这样: WHERE TO_DAYS(charge_date)=TO_DAYS(#{chargeDate}) convert select now(),convert(now(),date) convert不仅仅是一个日期转换函数,但是在datetime 和 date类型比较的时候就可以使用convert来,而不是str_to_date 或者 date_format 例如,在MySQL数据库中charge_date是date类型,而Java中使用的是java.util.Date的时候就可以使用下面的SQL: charge_date = CONVERT(#{date},DATE) 日期加减 SELECT date_add(now(), INTERVAL 1 DAY), date_add(now(), INTERVAL 1 HOUR), date_add(now(), INTERVAL 1 MINUTE), date_add(now(), INTERVAL 1 SECOND), date_add(now(), INTERVAL 1 MICROSECOND), date_add(now(), INTERVAL 1 WEEK), date_add(now(), INTERVAL 1 MONTH), date_add(now(), INTERVAL 1 QUARTER), date_add(now(), INTERVAL 1 YEAR), date_add( now(), INTERVAL '01:00:00' HOUR_SECOND ), date_add( now(), INTERVAL '1 00:00:00' DAY_SECOND ); 日期加法没什么特别的Mssq字符串函数,从上到下依次是当前日期加1天,1小时,1分钟,1秒钟,1微妙,1星期,1个月,1季度(3个月),1年。 后2个说一下 HOUR_SECOND指的是加的时间格式是从"小时到秒",同理DAY_SECOND表示的加的时间是从"天到秒"。 日期的减法操作完全一样,只需要把date_add替换为date_sub就可以了。 日期差值 select datediff('2018-01-30', '2018-01-31'),datediff('2018-01-31', '2018-01-30'); 日期差datediff函数就是返回2个日期相差的天数,注意2个日期大小关系与返回值的正负关系。第一个日期大就为正值。与datediff相识的是timediff,不过很少用了。 时间秒转换 select time_to_sec('00:00:05'),sec_to_time(3600); 时间(time)和秒的相互转换也很少用。可以通过这2个函数计算一天有多少秒,这个秒数对应的是一天中的哪一个时间等。 (编辑:晋中站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |