为什么mysql subdate(现在是(3),2)函数要在毫秒内添加额外的三位数?

5fjcxozz  于 2021-06-21  发布在  Mysql
关注(0)|答案(2)|浏览(350)
set @currentdatetime:=now(3);
set @intervalStartDate:=subdate(@currentdatetime, 2);

select @currentdatetime, @intervalStartDate;

这些查询提供以下输出:

|   @currentdatetime        |      @intervalStartDate       | 
-------------------------------------------------------------
|2018-04-15 13:02:32.948    |    2018-04-13 13:02:32.948000 |

为什么在结尾加上三个额外的零 @intervalStartDate ?
我怎样才能去掉这些?

jk9hmnmh

jk9hmnmh1#

NOW() 函数的最大小数位数为6位(毫秒)。

SELECT NOW(6);

给出如下信息:

2018-04-17 13:43:55.067047

每当在datetime参数中以毫秒(任意精度)调用subdate()函数时,它将以毫秒的最大精度限制计算并分配输出。

vq8itlhq

vq8itlhq2#

1) 为什么最后加了三个额外的零?:-
每当在datetime参数中以毫秒(任意精度)调用subdate()函数时,它将以毫秒的最大精度限制计算并分配输出
2) 我怎样才能去掉这些?
而不是存储 now() 在变量中并将其传递到 subdate() ,直接通过 now() 进入 subdate() ,即替换

set @currentdatetime:=now(3);
set @intervalStartDate:=subdate(@currentdatetime, 2);

用这个

set @intervalStartDate:=subdate(now(3), 2);

但是如果你想存储 now() 首先在一个变量中,然后一个消除尾随零的解决方法是 trim mysql的。

set @currentdatetime:=now(3);
set @intervalStartDate:=trim(trailing '0' from subdate(@currentdatetime, 2));

请看这里的演示

相关问题