• 关于 mysql 存储 小数 的搜索结果

问题

MySQL中的双vs十进制?mysql

保持可爱mmm 2020-05-17 19:14:39 0 浏览量 回答数 1

问题

纬度/经度(小数点后8位)应使用哪种MySQL数据类型??mysql

保持可爱mmm 2020-05-17 12:59:05 0 浏览量 回答数 1

回答

您需要使用MySQL 5.6.4或更高版本,才能声明具有小数秒时间数据类型的列。不确定您使用的版本正确吗?尝试SELECT NOW(3)。如果遇到错误,则说明您的版本不正确。 例如,DATETIME(3)将为您提供时间戳的毫秒分辨率,并TIMESTAMP(6)为您提供* nix样式的时间戳的微秒分辨率。 阅读此内容:https : //dev.mysql.com/doc/refman/8.0/en/fractional-seconds.html NOW(3) 将为您提供MySQL服务器操作系统的当前时间(以毫秒为单位)。 如果自Unix纪元以来有毫秒数,请尝试此操作以获取DATETIME(3)值 FROM_UNIXTIME(ms * 0.001) 例如,自Unix纪元以来,以毫秒为单位表示Javascript时间戳。 (请注意,MySQL内部小数运算(如* 0.001)始终被视为IEEE754双精度浮点数,因此,在太阳成为一颗白矮星之前,您不太可能会失去精度。) 如果您使用的是旧版MySQL,并且需要亚秒级的时间精度,则最好的方法是升级。其他任何事情都将迫使您执行混乱的解决方法。 如果由于某种原因而无法升级,则可以考虑使用BIGINT或DOUBLE列将JavaScript时间戳当作数字来存储。 FROM_UNIXTIME(col * 0.001)仍然可以正常工作。如果您需要当前时间存储在这样的列中,则可以使用UNIX_TIMESTAMP() * 1000来源:stack overflow

保持可爱mmm 2020-05-17 12:10:11 0 浏览量 回答数 0

海外云虚拟主机包年25元/月起

海外独享虚拟主机全面上线,助力构建海外网站,提升公司国际形象;全球有效覆盖,超高性价比;建站入门首选,助力出口,适合跨境贸易企业。

回答

DECIMAL是用于精确算术的MySQL数据类型。与FLOAT不同,它的精度对于任何大小的数字都是固定的,因此通过使用它而不是FLOAT,可以在进行某些计算时避免精度误差。如果您只是存储和检索数字而无需计算,那么在实践中FLOAT是安全的,尽管使用DECIMAL不会造成任何危害。通过计算,FLOAT基本上还是可以的,但是绝对要保证8d.p。精度,您应该使用DECIMAL。 纬度的范围是-90至+90(度),因此可以使用DECIMAL(10,8),但是经度的范围是-180至+180(度),因此您需要DECIMAL(11,8)。第一个数字是存储的总位数,第二个数字是小数点后的数字。 简而言之: lat DECIMAL(10, 8) NOT NULL, lng DECIMAL(11, 8) NOT NULL 这说明了MySQL如何使用浮点数据类型。 更新: MySQL支持空间数据类型,并且Point是可以使用的单值类型。例: CREATE TABLE buildings ( coordinate POINT NOT NULL, /* Even from v5.7.5 you can define an index for it */ SPATIAL INDEX SPATIAL (coordinate) ) ENGINE=InnoDB; /* then for insertion you can */ INSERT INTO buildings (coordinate) VALUES (POINT(40.71727401 -74.00898606));来源:stack overflow

保持可爱mmm 2020-05-17 12:59:23 0 浏览量 回答数 0

回答

鉴于它是原始表达式,您应该使用它DB::raw()来设置CURRENT_TIMESTAMP列的默认值: $table->timestamp('created_at')->default(DB::raw('CURRENT_TIMESTAMP')); 这在每个数据库驱动程序上都可以完美运行。 新捷径 从Laravel 5.1.25开始(请参阅PR 10962并提交15c487fe),可以使用新的useCurrent()列修饰符方法将设置CURRENT_TIMESTAMP为列的默认值: $table->timestamp('created_at')->useCurrent(); 回到问题,在MySQL上,您还可以ON UPDATE通过DB::raw()以下方式使用子句: $table->timestamp('updated_at')->default(DB::raw('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP')); 陷阱 MySQL 从MySQL 5.7开始,0000-00-00 00:00:00不再被视为有效日期。如Laravel 5.2升级指南中所述,当您将记录插入数据库时​​,所有时间戳列均应收到有效的默认值。您可以useCurrent()在迁移中使用column修饰符(来自Laravel 5.1.25及更高版本)将timestamp列默认为当前时间戳,或者可以使timestamps nullable()允许空值。 PostgreSQL&Laravel 4.x 在Laravel 4.x版本中,PostgreSQL驱动程序使用默认的数据库精度来存储时间戳值。在CURRENT_TIMESTAMP具有默认精度的列上使用该函数时,PostgreSQL会生成具有更高可用精度的时间戳,从而生成带有小数第二部分的时间戳- 请参见此SQL提琴。 这将导致Carbon无法解析时间戳,因为它不会期望存储微秒。为了避免这种意外行为破坏您的应用程序,您必须对函数明确给出零精度,CURRENT_TIMESTAMP如下所示: $table->timestamp('created_at')->default(DB::raw('CURRENT_TIMESTAMP(0)')); 从Laravel 5.0开始,将timestamp()列更改为使用默认精度零,从而避免了这种情况。来源:stack overflow

保持可爱mmm 2020-05-17 20:59:52 0 浏览量 回答数 0

问题

速戳 | 20位阿里出题专家-备战阿里必不可少的题目

Runt 2020-04-15 10:54:04 15965 浏览量 回答数 4

问题

MaxCompute百问集锦

yq传送门 2019-12-01 20:16:47 2404 浏览量 回答数 1

问题

MaxCompute百问集锦(持续更新20171011)

隐林 2019-12-01 20:19:23 38430 浏览量 回答数 18
阿里云大学 云服务器ECS com域名 网站域名whois查询 开发者平台 小程序定制 小程序开发 国内短信套餐包 开发者技术与产品 云数据库 图像识别 开发者问答 阿里云建站 阿里云备案 云市场 万网 阿里云帮助文档 免费套餐 开发者工具 云栖号物联网 小程序开发制作 视频内容分析 企业网站制作 视频集锦 代理记账服务 2020阿里巴巴研发效能峰会 企业建站模板 云效成长地图 高端建站 云栖号弹性计算 阿里云云栖号 云栖号案例 云栖号直播