加入收藏 | 设为首页 | 会员中心 | 我要投稿 好传媒网 (https://www.haochuanmei.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

mysql中sysdate函数转字符串_MySQL常用日期函数

发布时间:2022-12-10 14:03:04 所属栏目:MsSql教程 来源:互联网
导读: 当前时间
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 ()

结果大概如下:

602f6782b6367cc5f04a896bb3673a55.gif

用的最多的就是now()函数了,CURRENT_TIMESTAMP主要是用在datetime类型作为默认值。sysdate()是一个实时的,而其他的在一个session中都是有缓存的。

日期转字符串

select date_format(now(), '%Y-%m-%d %H:%i:%s');

e8e80d5de2620ff4d5119fada25973ee.gif

这个函数使用主要看习惯,一般不会在数据库层做转换,而会放在应用层。但是很多人习惯将查询条件转换为字符串比较。比如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'

);

字符串转日期函数应该也是根据个人习惯的使用多少,这样就很多查询就只需要做一次转换就可以了。如果不是特别要求数据库层不能做转换的话,可以在应用层直接传字符串。

6a4bb195992252494b561af3c130ddd9.gif

日期和天数转换

select to_days(now()),from_days(737090);

2d68e9f1db52c11f9ffe9111b5b00a75.gif

to_days转换为天,from_days从天数得的日期。用的多的是to_days,对于datetime只比较到天数(日期),不比较时间的话完全可以使用to_days来完成。像下面这样:

WHERE TO_DAYS(charge_date)=TO_DAYS(#{chargeDate})

convert

select now(),convert(now(),date)

ddfed7eb201390ed2b860e916211c714.gif

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

);

b64f6bc27261ed8c0d1251f1d2414956.gif

日期加法没什么特别的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');

3fa13d133f1754b7732a32b9a8e2ff54.gif

日期差datediff函数就是返回2个日期相差的天数,注意2个日期大小关系与返回值的正负关系。第一个日期大就为正值。与datediff相识的是timediff,不过很少用了。

时间秒转换

select time_to_sec('00:00:05'),sec_to_time(3600);

705460d7b1e4097499d69885bac5f68d.gif

时间(time)和秒的相互转换也很少用。可以通过这2个函数计算一天有多少秒,这个秒数对应的是一天中的哪一个时间等。

(编辑:好传媒网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!