由于MySQL目前字段的默认值不支持函数,所以以
create_time datetime default now()
的形式设置默认值是不可能的。
代替的方案是使用TIMESTAMP类型代替DATETIME类型。
TIMESTAMP列类型自动地用当前的日期和时间标记INSERT或UPDATE的操作。
如果有多个TIMESTAMP列,只有第一个自动更新。
自动更新第一个TIMESTAMP列在下列任何条件下发生:
1. 列值没有明确地在一个INSERT或LOAD DATA INFILE语句中指定。
2. 列值没有明确地在一个UPDATE语句中指定且另外一些的列改变值。(注意一个UPDATE设置一个列为它已经有的值,这将不引起TIMESTAMP列被更新,因为如果你设置一个列为它当前的值,MySQL为了效率而忽略更改。)
3. 你明确地设定TIMESTAMP列为NULL.
4. 除第一个以外的TIMESTAMP列也可以设置到当前的日期和时间,只要将列设为NULL,或NOW()。
另外在5.0以上版本中也可以使用trigger来实现此功能。
create table test_time (
id int(11),
create_time datetime
);
delimiter |
create trigger default_datetime before insert on test_time
for each row
if new.create_time is null then
set new.create_time = now();
end if;|
delimiter ;
mysql中如何设置默认时间为当前时间?
把日期类型 选择成timestamp 允许空 就可以了
CREATE TABLE `dtal` (
`uname` varchar(50) NOT NULL,
`udate` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
而如果要在navicat下操作的话,将字段设置为timestamp,然后默认值写上CURRENT_TIMESTAMP即可
分享到:
相关推荐
MySQL 日期时间函数大全 在 MySQL 中,日期时间函数是非常重要的一部分,它们可以帮助我们对日期和时间进行各种操作。下面我们将对 MySQL 中的日期时间函数进行详细的讲解。 DAYOFWEEK(date) `DAYOFWEEK` 函数...
TIMESTAMP 类型是 MySQL 中的一种日期时间类型,可以自动更新当前时间。使用 TIMESTAMP 类型可以实现自动设置默认时间值的功能。例如,创建一个名为 `test_time` 的表,其中包含一个 `create_time` 字段,类型为 ...
以下是对在MySQL建表过程中如何将日期设置为默认获取当前系统时间这一知识点的深入探讨。 ### 1. 使用`CURRENT_TIMESTAMP`作为默认值 在创建表结构时,可以指定某一列(通常是时间戳类型)的默认值为`CURRENT_...
MySQL datetime 设置当前时间为默认值 MySQL 中的 datetime 类型字段无法使用函数作为默认值,因此无法使用 `create_time datetime default now()` 的形式设置默认值。代替的方案是使用 TIMESTAMP 类型代替 ...
`CURRENT_TIMESTAMP`是MySQL中的一个函数,用于返回当前的系统日期和时间。当作为字段的默认值时,它会被解析为当前系统时间,而无需在插入新行时显式地提供一个时间值。 ### 二、设置默认时间为当前时间 #### 1. ...
- **date**:表示原始的日期时间值。 例如,`DATEADD(DAY, 1, '2023-01-01')`将返回`2023-01-02`。 ### 实例应用 假设我们有一个`Titles`表,其中包含一个名为`PubDate`的日期字段,我们想查询所有书籍在21天后的...
3. **HOUR 函数**:用于获取日期或时间表达式的小时部分。 4. **DATE_FORMAT 函数**:用于格式化日期和时间数据。 #### 实现方法详解 假设我们有一个登录日志表 `tb_log_login`,其中包含用户登录的时间戳 `...
MySQL 自增长时间字段详解 ...本文详细介绍了 MySQL 中的自增长和时间字段的使用方法,包括自增长字段、时间字段、默认值和时间类型等。这些技术可以帮助我们更好地管理和记录数据,提高数据库系统的效率和可靠性。
3. 日期、时间和日期时间类型通常不支持系统默认值,除非是`timestamp`类型使用`NOW()`。 4. `timestamp`类型可以使用`NOW()`获取当前日期时间作为默认值。 5. 如果需要为非空`char`字段设置默认值,可以使用一个...
在MySQL数据库操作中,有时我们需要在查询时为某些字段赋予默认值,特别是在处理可能存在NULL值的字段时。这种操作在数据分析、报表生成或业务逻辑处理中非常常见,因为确保每个字段都有一个有效的值可以避免程序...
### MySQL 常用函数及概念详解 #### 一、MySQL 数据库优化——重点函数与概念应用 在处理大规模数据时,对MySQL数据库进行优化至关重要。优化不仅能够提高查询速度,减少服务器负担,还能有效提升应用程序的整体...
这些模式在5.7版本中默认开启,不允许日期和时间字段有零值(如'0000-00-00')。当你尝试创建包含这样的默认值的表时,比如: ```sql `MODIFY_DATETIME` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' ON ...
可以使用`FROM_UNIXTIME()`函数将时间戳转换为日期时间,或者`UNIX_TIMESTAMP()`将日期时间转换为时间戳。 8. **自定义格式化**: 使用`DATE_FORMAT()`或`STRFTIME()`函数可以按照特定格式显示日期和时间,这在...
3. **使用兼容模式**:如果你的应用程序依赖于旧的行为,可以尝试设置`sql_mode`为一个更宽松的模式,例如只包含`NO_ENGINE_SUBSTITUTION`,这将允许MySQL在遇到不支持的存储引擎时使用默认引擎。 4. **使用IFNULL...
`default`属性被设置为`sysdate()`,这是一个SQL函数,用于获取当前系统日期和时间。因此,在插入或更新记录时,如果该字段没有被显式设置,那么它的值将自动设置为当前的系统日期和时间。 #### 控制字段是否参与...
这是因为在某些MySQL版本(如5.6及之前)中,不支持在ALTER TABLE语句中直接使用`CURRENT_TIMESTAMP`作为datetime字段的默认值。解决这个问题的方法是使用SQL脚本来修改表结构,例如: ```sql ALTER TABLE `ts_role...
当你将一个字段的默认值设置为`CURRENT_TIMESTAMP`,这意味着每当在这个字段没有指定任何值时(例如在插入新记录或更新记录但未改变该字段时),系统会自动将该字段的值设置为当前的日期和时间。 这种配置在数据库...
总的来说,虽然MySQL不支持直接在列定义中使用`NOW()`作为默认值,但通过使用`TIMESTAMP`列并利用其自动更新特性,可以实现类似的效果,记录数据的创建或修改时间。在处理`TIMESTAMP`列时,理解其显示尺寸和存储精度...
### Oracle与MySQL语法定义及函数的不同之处及解决方案 #### 数据迁移常见问题及处理方法 **问题一:** 扫描件表数据转移过程中出现数据量不一致。 **可能原因及解决办法:** 1. **扫描件本身损坏**:检查源...