近期使用MySQL问题汇总2

100 阅读3分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 2 天,点击查看活动详情

MySQL常用日期时间函数

now()

NOW([fsp]):返回服务器的当前日期和时间(fsp指定小数秒的精度,取值0--6)

mysql> select now();
+---------------------+
| now()               |
+---------------------+
| 2023-02-14 23:26:50 |
+---------------------+
1 row in set (0.00 sec)
 
mysql> select now()+0;
+----------------+
| now()+0        |
+----------------+
| 20230214232656 |
+----------------+
1 row in set (0.00 sec)
 
mysql> select now(6);
+----------------------------+
| now(6)                     |
+----------------------------+
| 2023-02-14 23:27:02.587353 |
+----------------------------+
1 row in set (0.00 sec)

sysdate与now的区别

# 与now的不同点:(一般使用NOW而不用SYSDATE)
# 1、SYSDATE()返回的是函数执行时的时间
# 2、now()返回的是语句执行时的时间

mysql> select now(), sleep(2), now();
+---------------------+----------+---------------------+
| now()               | sleep(2) | now()               |
+---------------------+----------+---------------------+
| 2023-02-14 23:32:34 |        0 | 2023-02-14 23:32:34 |
+---------------------+----------+---------------------+
1 row in set (2.08 sec)
 
mysql> select sysdate(), sleep(2), sysdate();
+---------------------+----------+---------------------+
| sysdate()           | sleep(2) | sysdate()           |
+---------------------+----------+---------------------+
| 2023-02-14 23:32:52 |        0 | 2023-02-14 23:32:54 |
+---------------------+----------+---------------------+
1 row in set (2.08 sec)

curtime()

CURTIME([fsp]):返回当前时间,只包含时分秒(fsp指定小数秒的精度,取值0--6)

格式:
  ‘YYYY-MM-DD HH:MM:SS’或者‘YYYYMMDDHHMMSS’

curdate()

CURDATE():返回当前日期,只包含年月日

格式:
  ‘YYYY-MM-DD’或者‘YYYYMMDD’

timediff()

TIMEDIFF(expr1, expr2):返回两个日期相减(expr1 − expr2 )相差的时间数(两个参数类型必须相同)

datediff()

DATEDIFF(expr1, expr2):返回两个日期相减(expr1 − expr2 )相差的天数

date_add()/date_sub()

日期时间运算函数:分别为给定的日期date加上(add)或减去(sub)一个时间间隔值expr

格式:
  DATE_ADD(date, INTERVAL  expr  unit);
  DATE_SUB(date, INTERVAL  expr  unit);
interval是间隔类型关键字
expr是一个表达式,对应后面的类型
unit是时间间隔的单位(间隔类型)(20个),如下:
HOUR 小时
MINUTESECOND 秒
MICROSECOND 毫秒
YEARMONTHDAY 日
WEEK 周
QUARTER 季
YEAR_MONTH 年和月
DAY_HOUR 日和小时
DAY_MINUTE 日和分钟
DAY_ SECOND 日和秒
HOUR_MINUTE 小时和分
HOUR_SECOND 小时和秒
MINUTE_SECOND 分钟和秒

选取日期时间的各个部分

选取日期时间的各个部分:日期、时间、年、季度、月、日、小时、分钟、秒、微秒(常用)

SELECT now(),date(now()); -- 日期
SELECT now(),time(now()); -- 时间
SELECT now(),year(now()); -- 年
SELECT now(),quarter(now()); -- 季度
SELECT now(),month(now()); -- 月
SELECT now(),week(now()); -- 周
SELECT now(),day(now()); -- 日
SELECT now(),hour(now()); -- 小时
SELECT now(),minute(now()); -- 分钟
SELECT now(),second(now()); -- 秒
SELECT now(),microsecond(now()); -- 微秒
EXTRACT(unit FROM date):从日期中抽取出某个单独的部分或组合
SELECT now(),extract(YEAR FROM now()); -- 年
SELECT now(),extract(QUARTER FROM now()); -- 季度
SELECT now(),extract(MONTH FROM now()); -- 月
SELECT now(),extract(WEEK FROM now()); -- 周
SELECT now(),extract(DAY FROM now()); -- 日
SELECT now(),extract(HOUR FROM now()); -- 小时
SELECT now(),extract(MINUTE FROM now()); -- 分钟
SELECT now(),extract(SECOND FROM now()); -- 秒
SELECT now(),extract(YEAR_MONTH FROM now()); -- 年月
SELECT now(),extract(HOUR_MINUTE FROM now()); -- 时分

个性化显示时间日期

dayofweek(date)
dayofmonth(date)
dayofyear(date)
-- 分别返回日期在一周、一月、一年中是第几天

dayname()
monthname()
-- 分别返回日期的星期和月份名称
-- 名称是中文or英文的由系统变量lc_time_names控制(默认值是'en_US')
show variables like 'lc_time_names';
set lc_time_names='zh_CN';

MySQL报2003错误

数据库登录时报错:2003: Can't connect to MYSQL server on 'localhost'(0);

方法1:启动mysql服务

方法2:可能是没有将mysql的bin目录添加到环境亦是的PATH,添加后重新尝试一遍