|
|
1
781
重要编辑: 现在可以用datetime字段实现这一点,因为 MySQL 5.6 ,看看 other post 在下面… 以前的版本不能用datetime来实现这一点… 但您可以使用时间戳:
**注意:如果您定义了一个当前时间戳为默认值的列,则需要始终为此列指定一个值,否则更新时该值将自动重置为“now()”。这意味着,如果不想更改该值,则UPDATE语句必须包含“[您的列名]=[您的列名]”(或其他一些值),否则该值将变为“now()”。很奇怪,但是真的。我希望这有帮助。我使用的是5.5.56-mariadb** |
|
|
2
525
在版本5.6.5中,可以在datetime列上设置默认值,甚至可以创建一个列,该列将在行更新时更新。类型定义:
参考文献: http://optimize-this.blogspot.com/2012/04/datetime-default-now-finally-available.html |
|
|
3
139
MySQL before version 5.6.5 )不允许将函数用于默认的日期时间值。时间戳因其行为古怪而不适用,不建议用作输入数据。(见 MySQL Data Type Defaults ) 也就是说,你可以做到这一点 by creating a Trigger .
我有一个表,其中的日期创建字段类型为datetime。我在“插入前”和“插入前”表上创建了一个触发器
我希望这对某人有帮助。 |
|
|
4
129
对我来说,触发方法是最有效的,但我发现了一个障碍。考虑使用基本触发器将日期字段设置为插入时的当前时间:
这通常很好,但假设您希望通过insert语句手动设置字段,例如:
发生的情况是,触发器会立即覆盖为字段提供的值,因此设置非当前时间的唯一方法是使用后续更新语句--yuck!若要在提供值时重写此行为,请使用ifnull运算符尝试此稍微修改的触发器:
这两个方面都是最好的:您可以为日期列提供一个值,它需要,否则它将默认为当前时间。它仍然是相对于表定义中的默认getDate()之类的干净东西的贫民区,但是我们越来越接近了! |
|
|
5
23
我可以使用表中的这个alter语句来解决这个问题,该语句有两个datetime字段。
这与您希望now()函数正常工作一样。插入空值或忽略创建的和更新的字段会在两个字段中产生一个完美的时间戳值。行的任何更新都会更改更新后的日期。如果您通过MySQL查询浏览器插入记录,则还需要一个步骤,即用新的时间戳处理创建的日期的触发器。
触发器可以是你想要的任何东西,我只是喜欢命名约定[trig]uuuu table_u name]uuu[insert] |
|
|
6
22
你可以用触发器来做这类事情。
|
|
|
7
16
为所有那些失去信心的人设置一个默认值 日期时间 价值在 MySQL 我很清楚你的感受。所以这里是:
仔细观察 我没有添加单引号/双引号 周围 零 我真的在解决这个问题之后跳了起来:d |
|
8
13
MySQL 5.6 has fixed this problem .
|
|
|
9
12
这真是个可怕的消息。 here is a long pending bug/feature request for this . 该讨论还讨论了时间戳数据类型的局限性。 我真的很想知道实现这一点有什么问题。 |
|
|
10
8
如果已经创建了表,则可以使用 将默认值更改为当前日期时间
将默认值更改为“2015-05-11 13:01:01”
|
|
|
11
7
对于所有使用timestamp列作为解决方案的用户,我希望在手册中遵循以下限制: http://dev.mysql.com/doc/refman/5.0/en/datetime.html “时间戳数据类型的范围是‘1970-01-01 00:00:01’UTC到’ 2038年1月19日03:14:07 UTC。它有不同的属性,这取决于MySQL版本和服务器运行的SQL模式。这些属性将在本节后面介绍。“ 所以这显然会在28年内破坏你的软件。 我相信数据库方面唯一的解决方案是使用类似于其他答案中提到的触发器。 |
|
|
12
7
定义多行触发器时,必须将分隔符更改为分号,MySQL编译器将使用分号作为触发器的结尾并生成错误。 例如
|
|
|
13
6
可以使用now()设置日期时间列的值,但请记住,不能将其用作默认值。 |
|
|
14
6
我运行的是MySQLServer5.7.11,这句话是:
是 不 工作。但以下内容:
只是作品 . 作为一个 旁白 ,在 mysql docs :
即使他们也说:
|
|
|
15
5
但你不能这么做
注意表中没有引号。 对于MySQL 5.5 |
|
|
16
4
下面是如何在MySQL5.1上执行此操作:
我不知道你为什么要输入两次列名。 |
|
|
17
3
如果您试图将默认值设置为now(),我认为MySQL不支持该设置。在MySQL中,除了timestamp数据类型列之外,不能将函数或表达式用作任何类型的列的默认值,您可以将当前的时间戳指定为默认值。 |
|
18
2
在上面创建“testtable”的查询中,我使用“1999-12-12 12:12:12”作为datetime列的默认值
|
|
|
19
2
使用以下代码
|
|
|
20
2
我认为在MySQL中很简单,因为mysql内置函数now()给出了当前时间(插入的时间)。 所以您的查询应该类似
谢谢您。 |
|
|
21
0
如果您试图将默认值设置为now(),MySQL支持您必须更改该列时间戳的类型而不是日期时间。时间戳默认为当前日期和时间。我认为它将解决您的问题。 |
|
|
22
0
例如,如果我有一个名为“site”的表,其中有一个created_at和一个update_at列,该列都是datetime,并且需要now的默认值,那么我可以执行以下SQL来实现这一点。 ALTER TABLE `site` CHANGE `created_at` `created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP; ALTER TABLE `site` CHANGE `created_at` `created_at` DATETIME NULL DEFAULT NULL; ALTER TABLE `site` CHANGE `updated_at` `updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP; ALTER TABLE `site` CHANGE `updated_at` `updated_at` DATETIME NULL DEFAULT NULL; 语句序列很重要,因为一个表不能有两列timestamp类型,其默认值为cureent timestamp |
|
|
23
0
这是我的触发器示例:
|
|
|
24
-2
您可以解析默认时间戳。首先考虑您正在使用的字符集,例如,如果采用utf8,则此字符集支持所有语言;如果采用laten1,则此字符集仅支持英语。下一个SETP如果您在任何项目下工作,您应该知道客户机时区并选择您是客户机区域。此步骤是必需的。 |
|
|
malife89 · 将java中的字符串读取为正确的日期格式 1 年前 |
|
|
Jas Mahay · 使用日期和日历:需要社区帮助来提高工作表的效率 1 年前 |
|
|
ViSa · 如何从Pandas的列中提取日期? 1 年前 |
|
|
Wolfspirit · 你如何确定一个时间点是否在一个时间段内? 1 年前 |
|
Steven · Python的美国/纽约时间偏移显示-04:56 1 年前 |