运维实施16-字符,日期函数

字符,日期函数

1、字符函数

 01、CONCAT

        ==java中的+号==

  • 描述用于连接多个字符串。

  • 语法CONCAT(string1, string2, ...)

示例:

SELECT CONCAT('Hello', ' ', 'World') AS greeting; -- 返回 'Hello World'
02、UPPER
  • 描述将字符串转换为大写。

  • 语法UPPER(string)

示例:

SELECT UPPER('hello') AS upper_case; -- 返回 'HELLO'
03、LOWER
  • 描述将字符串转换为小写。

  • 语法LOWER(string)

示例:

SELECT LOWER('HELLO') AS lower_case; -- 返回 'hello'
04、LENGTH
  • 描述返回字符串的长度。

  • 语法LENGTH(string)

示例:

SELECT LENGTH('hello') AS string_length; -- 返回 5
05、SUBSTRING
  • 描述提取字符串的子字符串。

  • 语法SUBSTRING(string, start, length)

示例:

SELECT SUBSTRING('Hello World', 1, 5) AS sub_string; -- 返回 'Hello'
06、REPLACE
  • 描述替换字符串中的子字符串。

  • 语法REPLACE(string, old_substring, new_substring)

示例:

SELECT REPLACE('Hello World', 'World', 'SQL') AS replaced_string; -- 返回 'Hello SQL'
07、TRIM
  • 描述去除字符串两端的空格。

  • 语法TRIM(string)

示例:

SELECT TRIM('   Hello   ') AS trimmed_string; -- 返回 'Hello'

2、日期函数

01、CURDATE
  • 描述返回当前日期。

  • 语法CURDATE()

示例:

SELECT CURDATE() AS current_date; -- 返回当前日期
02、DATEDIFF
  • 描述计算两个日期之间的天数差。

  • 语法DATEDIFF(date1, date2)

示例:

SELECT DATEDIFF(CURDATE(), '2023-01-01') AS days_difference; -- 返回从 2023-01-01 到今天的天数
03、YEAR
  • 描述提取日期中的年份。

  • 语法YEAR(date)

示例:

SELECT YEAR('2023-01-01') AS year; -- 返回 2023
04、MONTH
  • 描述提取日期中的月份。

  • 语法MONTH(date)

  • 示例:

    SELECT MONTH('2023-01-01') AS month; -- 返回 1
05、DAY
  • 描述提取日期中的天。

  • 语法DAY(date)

  • 示例:

    SELECT DAY('2023-01-01') AS day; -- 返回 1
06、NOW
  • 描述返回当前日期和时间。

  • 语法NOW()

  • 示例:

    SELECT NOW() AS current_datetime; -- 返回当前的日期和时间
07、CURTIME
  • 描述返回当前时间。

  • 语法CURTIME()

  • 示例:

    SELECT CURTIME() AS current_time; -- 返回当前时间
08、DATE_ADD
  • 描述在日期上加上一个时间间隔。

  • 语法DATE_ADD(date, INTERVAL value unit)

  • 示例:

    SELECT DATE_ADD('2023-01-01', INTERVAL 1 YEAR) AS next_year; -- 返回 '2024-01-01'
09、DATE_SUB
  • 描述从日期中减去一个时间间隔。

  • 语法DATE_SUB(date, INTERVAL value unit)

示例:

SELECT DATE_SUB('2023-01-01', INTERVAL 1 MONTH) AS last_month; -- 返回 '2022-12-01'

3、案例

INSERT INTO emp (name, salary, hire, dept) VALUES
('张三', 60000, '2020-01-15', '技术部'),
('李四', 75000, '2019-03-22', '市场部'),
('王五', 50000, '2021-06-30', '人事部'),
('赵六', 80000, '2018-11-11', '财务部'),
('钱七', 90000, '2022-02-01', '技术部'),
('孙八', 65000, '2020-05-20', '市场部');
CREATE TABLE emp (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100),
    salary DECIMAL(10, 2),
    hire DATE,
    dept VARCHAR(50)
);
  •  查询所有emp的name和salary。
    Select name, salary From  emp;
  • 查询salary大于60000的empname。
    select name from emp where salary > 60000;
  • 查询所有emp的入职年份。
    select name, year(hire) as 入职年份 from emp;
  • 查询所有emp的dept。
  • select distinct dept from emp;
  • 查询所有emp的name长度。
  • select namr,length(name) as name长度 from emp;
  • 查询所有emp的name,转换为大写。
  • select upper(name) as name大写 from emp;
  • 查询所有emp的dept,去除空格。
  • select trim(dept) as 清理dept from emp;
  • 查询所有emp的name,提取前两个字符。
  • select name, substring(name,1,2) as name前两个字符 from emp;
  • 查询所有emp的name,转换为小写。
  • select lower(name) as name小写 from emp;
  • 查询所有emp的name,替换其中的"张"为"李"。
  • select replace(name,'张','李') as 替换name from emp;
  • 查询当前日期。
  • select curdate() as 当前日期;
  • 查询从hire到现在的天数。
  • select name, datediff(curdate(),hire) as 在职天数 from emp;
  • 查询入职超过一年的empname。
  • select name from emp where hire < date_sub(curdate(),interval 1 year);
  • 查询hire在2021年之后的empname。
  • select name from emp where hire > '2021-01-01';
  • 查询当前时间。
  • select ccurtime() as 当前时间
  • 查询hire加上两年后的日期。
  • select name,date_add(hire,interval 2 year) as 两年后hire from emp;
  • 查询emp总数。
  • select count(*) as emp总数 from emp;
  • 查询平均salary。
  • select avg(salary) as 平均salary from emp;
  • 查询最高salary和最低salary。
  • select max(salary) as 最高salary,min(salary) as 最低salary from emp;
  • 查询salary大于80000的emp数量。
  • select count(*) as 高salaryemp数量 from emp where salary > 80000;
  • 按dept分组,查询每个dept的emp数量。
  • select dept, count(*) as emp数量 from emp group by dept;
  • 按dept分组,查询每个dept的平均salary。
  • select dept, avg(salary)as 平均salary from emp group by dept;
  • 按dept分组,查询每个dept的最高salary。
  • select dept, max(salary) as 最高salary from emp group by dept;
  • 按入职年份分组,查询每年入职的emp数量。
  • select year(hire) as 入职年份, count(*) as emp数量 from emp group by 入职年份;
  • 查询每个dept的最高salary和最低salary。
  • select dept, max(salary) as 最高salary, min(salary) as 最低salary from emp group by dept;
  • 查询每个dept的emp数量和平均salary,按平均salary降序排列。
  • select dept,count(*) as emp数量,avg(salary) as 平均salary from emp group by dept order by 平均salary desc;
  • 查询hire在2020年之后的empname和dept。
  • select name, dept from emp emp where hire > '2020-01-01';
  • 查询empname、入职年份和在职天数。
  • select name, year(hire) as 入职年份, datediff(curdate(0, hire) as 在职天数 from emp;
  • 查询所有emp的name和salary,按salary降序排列。
  • select name, salary from emp order by salary desc;
  • 查询salary在50000到80000之间的empname和dept。
  • select name, dept from emp where salary between 50000 and 80000;
  • 查询hire在2020年和2021年之间的empname。
  • select name from emp where hire between '2020-01-01' and '2021-12-31';
  • 查询所有emp的name和hire,按hire升序排列。
  • select name, hire from emp emp order by hire asc;
  • 查询每个dept的emp数量和最高salary,按emp数量降序排列。
    select dept, count(*) as emp数量,max(salary) as 最高salary from emp group by dept order by emp数量 desc;

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值