回答

收藏

将列设置为MySql工作台中的时间戳?

技术问答 技术问答 220 人阅读 | 0 人回复 | 2023-09-14

这可能是一个非常基本的问题,但是我从来没有用过TIMESTAMP()之前创建过的表,而且我对作为参数的内容感到困惑。例如,在这里:
0 G) y4 `! `' d7 @2 Q
' e+ j% ~2 p- T; a  h6 k9 F' }1 @9 N4 t
+ a4 ?5 u  M4 n6 T' D
我只是随机输入TIMESTAMP(20),但是20作为参数在这里表示什么?这里应该放什么?5 K1 J+ y. Y" w- m; s( d
我用谷歌搜索了这个问题,但实际上并没有提出任何建议。。。无论如何,我是sql的新手,所以对您的帮助将不胜感激,谢谢!!1 t6 Z" ^% y( B( o! G* b" u
                  ?: D- Z4 i$ @' \+ O4 y# C
解决方案:
8 w0 f3 ~$ j2 L9 [9 n6 X                ) f: d# k& J: x1 R0 C, z4 o8 ~

% r7 H1 K# w7 l* r2 {1 w
) v, S' h! S( u6 ]& h6 o* Z& B                编辑
0 Y; S4 ?- w' n  E. L* J; s从MySQL 5.6.4开始,数据类型在小数秒内TIMESTAMP(n)指定n(0到6)精度的十进制数字。
" ?5 l0 o1 ]) @  B8 l在MySQL 5.6之前,MySQL不支持将小数秒存储为TIMESTAMP数据类型的一部分。: Z2 C: |8 k/ V; V
参考:https :7 }. V. W' M  s% @2 x( H
//dev.mysql.com/doc/refman/5.6/en/fractional-* O2 m2 T! k: Z' x4 v
seconds.html! U. h! n9 J+ g! ~* K' T/ k, W
2 P+ o1 n- b1 e  T- d
我们不需要在上指定长度修饰符TIMESTAMP。我们可以TIMESTAMP自己指定。
* O* O1 W8 Y4 j# [但是请注意,TIMESTAMP表中定义的第一列会自动进行初始化和更新。例如:- V$ P# ~# y- x/ v9 e# q3 u
create table foo (id int, ts timestamp, val varchar(2));* v9 y; J# L# A
show create table foo;
$ g9 N7 \& l# G: V5 f" ~' p1 \, o. yCREATE TABLE `foo` (  l; d( `# s! Z' |2 q
`id` INT(11) DEFAULT NULL,
" M, t+ ]& U* E5 d: o7 I7 S8 x2 E`ts` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,/ E7 d6 @) I5 i
`val` VARCHAR(2) DEFAULT NULL
' c4 U" @2 p/ o8 [1 ^# w" ])/ T% M; a" W! \- O7 Y2 Z. l, I1 R

& z6 H! I5 E0 R' [# L1 O数据类型后面的含义取决于该数据类型,但是对于某些数据类型,它是一个长度修饰符。
7 P% `; F- g( C7 @* T$ O对于某些数据类型,长度修饰符会影响可以存储的值的最大长度。例如,VARCHAR(20)最多可以存储20个字符。并且DECIMAL(10,6)允许使用小数点前四位数字和小数点后六位数字值,有效范围为-9999.999999至9999.999999。" E; |5 B  w& {" E/ C4 H
对于其他类型,使用长度修饰符不会影响可以存储的值的范围。例如,INT(4)和INT(10)都是整数,并且两者都可以存储整数数据类型允许的所有值范围。
$ S$ |! p& N& T4 u1 W在这种情况下,长度修饰符所做的只是提供信息。它本质上指定了建议的显示宽度。客户可以利用它来确定行上要保留多少空间以显示列中的值。客户不必这样做,但是该信息可用。4 E6 _% s9 j. t) `
编辑
2 O1 @# j, ^2 KTIMESTAMP 数据类型不再接受长度修饰符。(如果您运行的是旧版本的MySQL,并且该版本已被接受,它将被忽略。)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则