Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL将传统十进制转换为毫秒_Mysql_Sql_Math - Fatal编程技术网

MySQL将传统十进制转换为毫秒

MySQL将传统十进制转换为毫秒,mysql,sql,math,Mysql,Sql,Math,我正在使用一些传统的表,这些表以十进制表示时间,如下所示: 74447.548 = 7:44:47.548 我将其移动到一个表中,其中时间存储为(int)毫秒。我想为此转换创建一个函数。。以下方法可行,但有没有更有效的方法 CREATE FUNCTION `test`.`decimalToMilli` (bigTime decimal) RETURNS INTEGER BEGIN return (floor(mod(bigTime,floor(bigTime))*1000) -- mill

我正在使用一些传统的表,这些表以十进制表示时间,如下所示:

74447.548  = 7:44:47.548
我将其移动到一个表中,其中时间存储为(int)毫秒。我想为此转换创建一个函数。。以下方法可行,但有没有更有效的方法

CREATE FUNCTION `test`.`decimalToMilli` (bigTime decimal)
RETURNS INTEGER
BEGIN
return (floor(mod(bigTime,floor(bigTime))*1000)  -- milliseconds
  + (floor(bigTime) MOD 100)  * 1000 -- seconds
  + ((((floor(bigTime) - floor(bigTime) MOD 100) MOD 10000))/100) * 1000*60  -- minutes
  + ((((floor(bigTime) - floor(bigTime) MOD 10000) MOD 1000000))/10000) * 1000*60*60 --hrs
);
END
关于更好的方法的建议?

这个怎么样

CREATE FUNCTION `test`.`decimalToMilli` (bigTime decimal)
RETURNS INTEGER
BEGIN
  return ((bigTime * 1000) MOD 100000  -- seconds and milliseconds
         + (floor(bigTime / 100) MOD 100) * 60000 --minutes
         + (floor(bigTime / 10000)) * 3600000 -- hours
         );
END

谢谢-但我刚刚在测试中发现,您和我的例程都是以毫秒为单位,以最接近的秒为单位?!?2032.808的值作为1233000而不是1232808插入到我的表中-我在触发器中使用它作为raw_time=decimalToMilli(NEW.CumulativeTime),啊-它是在bigTime的声明中。。。它应该是(bigTime十进制(12,6))