MySQL中SYSDATE和NOW的区别

作者&投稿:霍彭 (若有异议请与网页底部的电邮联系)
MySQL中SYSDATE和NOW的区别~

MySQL获得当前日期+时间(date + time)函数sysdate() :

sysdate() 日期时间函数跟 now() 类似,不同之处在于:now() 在执行开始时值就得到了, sysdate() 在函数执行时动态得到值。

如下实例:
mysql> select now(), sleep(3), now();

+---------------------+----------+---------------------+
| now() | sleep(3) | now() |
+---------------------+----------+---------------------+
| 2015-04-12 16:00:00 | 0 | 2015-04-12 16:00:00 |
+---------------------+----------+---------------------+

mysql> select sysdate(), sleep(3), sysdate();
+---------------------+----------+---------------------+
| sysdate() | sleep(3) | sysdate() |
+---------------------+----------+---------------------+
| 2015-04-12 16:01:16 | 0 | 2015-04-12 16:01:19 |
+---------------------+----------+---------------------+
可以看到,虽然中途 sleep 3 秒,但 now() 函数两次的时间值是相同的; sysdate() 函数两次得到的时间值相差 3 秒。MySQL Manual 中是这样描述 sysdate() 的:Return the time at which the function executes。

sysdate() 日期时间函数,一般情况下很少用到。

MySQL中有5个函数需要计算当前时间的值:

NOW.返回时间,格式如:2012-09-23 06:48:28
CURDATE,返回时间的日期,格式如:2012-09-23
CURTIME,返回时间,格式如:06:48:28
UNIX_TIMESTAMP,返回时间整数戳,如:1348408108
SYSDATE,返回时间,格式和time()函数返回时间一样,但是有区别。

除了本身定义所返回的区别以外,另一个区别是:前四个函数都是返回基于语句的开始执行时间,而SYSDATE返回time的值。

通过比较,可以发现这两个函数的区别:

NOW()执行如下:

mysql> select now(),sleep(2),now();
+---------------------+----------+---------------------+
| now() | sleep(2) | now() |
+---------------------+----------+---------------------+
| 2012-09-23 06:54:29 | 0 | 2012-09-23 06:54:29 |
+---------------------+----------+---------------------+
1 row in set (2.00 sec)

其返回的两个值是一样的,因为都是表示语句开始执行的时间。
SYSDATE执行如下:

mysql> select sysdate(),sleep(2),sysdate();
+---------------------+----------+---------------------+
| sysdate() | sleep(2) | sysdate() |
+---------------------+----------+---------------------+
| 2012-09-23 06:55:00 | 0 | 2012-09-23 06:55:02 |
+---------------------+----------+---------------------+
1 row in set (2.01 sec)

也正因为有这个区别,我们一般在执行语句的时候,都是用NOW(),因为SYSDATE获取当时实时的时间,这有可能导致主库和从库是执行的返回值是不一样的,导致主从数据不一致。

其上其它函数执行如下:

mysql> select now(),sysdate(),curdate(),curtime(),unix_timestamp()\G;
*************************** 1. row ***************************
now(): 2012-09-23 07:00:05
sysdate(): 2012-09-23 07:00:05
curdate(): 2012-09-23
curtime(): 07:00:05
unix_timestamp(): 1348408805
1 row in set (0.00 sec)

MySQL获得当前日期+时间(date + time)函数sysdate() :

sysdate() 日期时间函数跟 now() 类似,不同之处在于:now() 在执行开始时值就得到了, sysdate() 在函数执行时动态得到值。

如下实例:
mysql> select now(), sleep(3), now();

+---------------------+----------+---------------------+
| now() | sleep(3) | now() |
+---------------------+----------+---------------------+
| 2015-04-12 16:00:00 | 0 | 2015-04-12 16:00:00 |
+---------------------+----------+---------------------+

mysql> select sysdate(), sleep(3), sysdate();
+---------------------+----------+---------------------+
| sysdate() | sleep(3) | sysdate() |
+---------------------+----------+---------------------+
| 2015-04-12 16:01:16 | 0 | 2015-04-12 16:01:19 |
+---------------------+----------+---------------------+
可以看到,虽然中途 sleep 3 秒,但 now() 函数两次的时间值是相同的; sysdate() 函数两次得到的时间值相差 3 秒。MySQL Manual 中是这样描述 sysdate() 的:Return the time at which the function executes。

sysdate() 日期时间函数,一般情况下很少用到。


MYSQL多线程并发操作同一张表同一个字段的问题有什么办法解决吗?被操作...
mysqlmysql> set resource group user_ytt for 278;Query OK, 0 rows affected (0.00 sec)当然这个是在运维层面来做的,我们也可以在开发层面结合 MYSQL HINT 来单独给这个语句赋予RG。比如:mysqlmysql> select \/*+ resource_group(user_ytt) *\/guid from t1 group by left(guid,8) order by...

mysql 5.0与5.5在那些方面不同
d. 增加了INFORMATION_SCHEMA表,新的表提供了与InnoDB压缩和事务处理锁定有关的具体信息。5)提高可用性 a. 针对SIGNAL\/RESIGNAL的新SQL语法 b. 新的表\/索引分区选项。MySQL5.5将表和索引RANG和LIST分区范围扩展到了非整数列和日期,并增加了在多个列上分区的能力。6)改善检测和诊断 Mysql5....

如何优化因 MYSQL 读写频繁,负载过高导致的CPU高占用率
mpstat -P ALL 1,查看cpu使用情况,主要消耗在sys即os系统调用上 perf top,cpu主要消耗在_spin_lock 生成perf report查看详细情况 CPU主要消耗在mutex争用上,说明有锁热点。采用pt-pmp跟踪mysqld执行情况,热点主要集中在mem_heap_alloc和mem_heap_free上。Pstack提供更详细的API调用栈 Innodb在读取...

MySQL CPU占用过高怎么办
1、同时按住键盘上Ctrl+Alt+Delete,点击“启用任务管理器(T)”就可以看到CPU使用率是多少了。(这里只有27%,因为没有运行游戏,后台程序也没有打开很多。)2、按组合键Win+R进入运行窗口输入“msconfig”点击“启动”,把不需要的程序禁用掉,程序不要打开太多,就可以减少CPU的使用率了。

mysql配置过大内存导致无法启动怎么办 如何解决
查询一下:shell> \/proc\/sys\/vm\/hugetlb_shm_group 27 shell> id 27 uid=27(mysql) gid=27(mysql) groups=27(mysql)hugetlb_shm_group 文件里填的是指定大页内存使用的用户组 id,这里查看到是 MySQL 组 id,那既然是给 MySQL 的为什么 free 等于 total,并且 mysql 还只有 20 多 G 实际...

mysql删除表数据后文件还在吗
.\/sys_parser -pmsandbox -d recovered sakila\/actor 由于5.x 版本 innodb 引擎并非完整记录表结构信息,会丢失 AUTO_INCREMENT 属性、二级索引和外键约束, DECIMAL 精度等信息。 若是mysql 5.5 版本 frm 文件被从系统删除,在原目录下 touch 与原表名相同的 frm 文件,还能读取表结构信息和数据。若只有 frm 文件...

linuxmysqld
mysqld是服务,mysql是客户端。mysqld其实是SQL后台程序(也就是MySQL服务器),它是关于服务器端的一个程序,mysqld意思是mysqldaemon,在后台运行,监听3306端口,如果你想要使用客户端程序,这个程序必须运行,因为客户端是通过连接服务器来访问数据库的。你只有启动了mysqld.exe,你的mysql数据库才能工作...

MySQL8.0错误日志Error log
根据错误日志配置,错误消息还可能填充performance_schema.error_log表,以便为日志提供SQL接口,使错误日志能够查询。如果用mysqld_safe启动mysqld,mysqld_safe会将消息写入错误日志。例如,当mysqld_safe注意到mysqld异常退出时,它会重新启动mysqld,并将mysqld重新启动的消息写入错误日志。在MySQL 8.0中...

MySQL中如何查看“慢查询”,如何分析执行SQL的效率?
(1)、Windows下开启MySQL慢查询MySQL在Windows系统中的配置文件一般是是my.ini找到[mysqld]下面加上代码如下log-slow-queries = F:\/MySQL\/log\/mysqlslowquery。loglong_query_time = 2(2)、Linux下启用MySQL慢查询MySQL在Windows系统中的配置文件一般是是my.cnf找到[mysqld]下面加上代码如下log-slow-queries=\/...

mysql内存持续增长
(详细介绍请看下面链接官方解释)那么这么大页内存是分配给谁的呢?查询一下:shell> \/proc\/sys\/vm\/hugetlb_shm_group 27 shell> id 27 uid=27(mysql) gid=27(mysql) groups=27(mysql)hugetlb_shm_group 文件里填的是指定大页内存使用的用户组 id,这里查看到是 MySQL 组 id,那既然是给 ...

新都区18919448182: MySQL中时间函数NOW和SYSDATE的区别 -
卫家越鞠: MySQL获得当前日期+时间(date + time)函数sysdate() : sysdate() 日期时间函数跟 now() 类似,不同之处在于:now() 在执行开始时值就得到了, sysdate() 在函数执行时动态得到值.e68a84e8a2ad32313133353236313...

新都区18919448182: mysql如何获取当前时间 -
卫家越鞠: 1.1 获得当前日期+时间(date + time)函数:now()除了 now() 函数能获得当前的日期时间外,MySQL 中还有下面的函数:current_timestamp() current_timestamplocaltime() localtimelocaltimestamp() localtimestamp这些日期时间函数,都等...

新都区18919448182: 如何把qt的时间类型写入mysql server数据库 -
卫家越鞠: 《MySQL:MySQL日期数据类型、MySQL时间类型使用总结》适用于 MySQL 5.X 及以上版本. 一、MySQL 获得当前日期时间 函数 1.1 获得当前日期+时间(date + time)函数:now() mysql> select now(); +---------------------+ | now() | +-------------...

新都区18919448182: mysql数据库怎么获得当前日期 -
卫家越鞠: mysql下执行 select now();

新都区18919448182: oracle和mysql获取当前时间的不同 -
卫家越鞠: 在oracle中:select sysdate from dual,而且必须加上from dual,否则报错,只支持sysdate ,和mysql不一样,mysql的是sysdate()函数;在mysql中写法:select SYSDATE(); select now(); select SYSDATE() from dual; select now() from dual; mysql中(1)可以加上from dual,可以不加;(2)有两个函数,分别是SYSDATE() 和 now() 函数;当一个人找不到出路的时候,最好的办法就是将当前能做好的事情做到极致,做到无人能及.

新都区18919448182: mysql问题,date类型怎么默认获得系统时间存储. -
卫家越鞠: 你可以改成 publis_date date not null default curdate(); curdate() 当前系统的时间,date 类型 sysdate() 和 now() 是当前系统时间并且精确到时分秒的,也就是datetime类型

新都区18919448182: mysql中now()函数在oracle中怎么用 -
卫家越鞠: 当前时间 mysql> SELECT NOW();+---------------------+ | NOW() |+---------------------+ | 2010-10-22 20:33:23 |+---------------------+1 row in set (0.00 sec) 在 Oracle 里面, 用 SYSDATE SQL> ALTER session 2 SET nls_date_format='yyyy-mm-dd hh24:mi:ss'...

新都区18919448182: mysql中now()函数在oracle中怎么用 -
卫家越鞠: 当前时间mysql> SELECT NOW(NOW(2010-10-22 20:33:23 1 row in set (0.00 sec...

新都区18919448182: mysql year(now())在oracle中应该怎么打 -
卫家越鞠: 当前时间就是:sysdateto_date(sysdate,'yyyymmdd')年月日 to_date(sysdate,'hh24:mi:ss')时分秒

新都区18919448182: java程序中向Oracle表中插入系统当前时间? -
卫家越鞠: oracle中当前时间用sysdate表示.所以可以通过如下方式插入: String userinfo="insert into userinfo VALUES("+"'"+userD+"',sysdate"+")"; //之后执行插库操作.备注,实际在数据库中插入语句如下 sql:insert into userinfo values('123',sysdate);

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网