SQL函数及高级用法

SQL聚合函数 COUNT 的5个高级用法与2个常见误区解析 本文深入解析SQL聚合函数COUNT的5个高级用法与2个常见误区,包括COUNT(*)与COUNT(列名)的性能差异、COUNT(DISTINCT)优化策略、与GROUP BY和窗口函数的组合应用等。通过实战案例和性能对比,帮助开发者掌握查询优化技巧,提升数据库操作效率。 阅读详情

一、日期函数

1、获取当前系统时间

SELECT 
  CURRENT_TIMESTAMP() AS `day`,-- 当天 全格式 2023-08-25 14:09:20
  CURDATE() AS `date`, -- 当天 日期 2023-08-25
  CURRENT_TIME() AS `time` ; -- 当前时分秒 14:09:20

image-20230825140635973

2、获取指定时间XX天之前/之后的日期

当前时间全格式

--
SELECT 
  SUBDATE(CURRENT_TIMESTAMP(), INTERVAL 5 DAY) AS `五天前`, -- 2023-08-20 14:10:20
  CURRENT_TIMESTAMP() AS `今天`, 							-- 2023-08-25 14:10:20
  ADDDATE(CURRENT_TIMESTAMP(), INTERVAL 5 DAY) AS `五天后` ; -- 2023-08-30 14:10:20

image-20230825141236051

当前时间日期


--
SELECT 
  SUBDATE(CURDATE(), INTERVAL 5 DAY) AS `五天前`,			-- 2023-08-20
  CURDATE() AS `今天`,     							   -- 2023-08-25
  ADDDATE(CURDATE(), INTERVAL 5 DAY) AS `五天后` ;          -- 2023-08-30

image-20230825141256884

指定时间

-- 
SELECT 
  SUBDATE('2023-01-01', INTERVAL 5 DAY) AS `五天前`,         -- 2022-12-27
  ADDDATE('2023-01-01', INTERVAL 5 DAY) AS `五天后` ;        -- 2023-01-06

image-20230825141307886

3、从日期或日期时间表达式中提取日期值

给定时间格式中截取日期

SELECT 
  DATE("2017-06-15 11:11:16"),
  DATE("2017-06-15T11:11:16"),
  DATE("2017-06-15") ;

4、提取年月日

-- 当前时间 
SELECT 
  YEAR(CURRENT_TIMESTAMP()) AS `year`,
  MONTH(CURRENT_TIMESTAMP()) AS `month`,
  DAY(CURRENT_TIMESTAMP()) AS `day` ;

-- 给定时间
SELECT 
  YEAR('2023-01-01') AS `year`,
  MONTH('2023-01-01') AS `month`,
  DAY('2023-01-01') AS `day` ;

image-20230825142045836

5、计算两个日期 之间相隔的天数

计算方式:前一个日期减去后一个日期 d1-d2

-- 计算日期 d1-d2 之间相隔的天数
SELECT DATEDIFF('2001-01-01','2001-02-02'); -- 前一个时间减去后一个时间 -32天

SELECT DATEDIFF('2001-02-02','2001-01-01'); -- 前一个时间减去后一个时间 32天

SELECT DATEDIFF('2049-01-01',CURDATE());    -- 给定时间减去当前时间 

SELECT ABS(DATEDIFF('2023-01-01','2023-05-05')); -- 外层套一个绝对值处理函数,就不用在意两个日期之间的顺序了 124天

image-20230825142845930

6、计算两个日期之间相隔的年数、天数、月数、小时

-- 相差年数
SELECT TIMESTAMPDIFF(YEAR,'2023-07-01','2023-08-26');-- 0
-- 相差月数
SELECT TIMESTAMPDIFF(MONTH,'2023-07-01','2023-08-26');-- 1
-- 相差天数
SELECT TIMESTAMPDIFF(DAY,'2023-07-01','2023-08-26'); -- 56
-- 相差周数 
SELECT TIMESTAMPDIFF(WEEK,'2023-07-01','2023-08-26'); -- 8
-- 相差季度(三个月)数
SELECT TIMESTAMPDIFF(QUARTER,'2023-02-01','2023-04-01'); -- 56

-- 相差小时数
SELECT TIMESTAMPDIFF(HOUR,'2023-08-25','2023-08-26'); -- 24
SELECT TIMESTAMPDIFF(HOUR,'2023-08-26 12:00:00','2023-08-26 12:55:00'); -- 0
SELECT TIMESTAMPDIFF(HOUR,'2023-08-26 12:00:00','2023-08-26 13:00:00'); -- 1
SELECT TIMESTAMPDIFF(HOUR,'2023-08-26 12:00:00','2023-08-26 13:30:00'); -- 1

6、时间格式化

SELECT DATE_FORMAT('2023.08.25 11:11:11','%Y-%m-%d %h:%m:%s');

image-20230825143210495
应用二:

SELECT  
CONCAT('2024-12-01 00:00') AS `基础时间`,

DATE_FORMAT('2024-12-01T00:00', '%Y') AS `年` ,
DATE_FORMAT('2024-12-01T00:00', '%m') AS `月`,
DATE_FORMAT('2024-12-01T00:00', '%d') AS `日`,
DATE_FORMAT('2024-12-01T00:00', '%H') AS `时(24小时值)`,
DATE_FORMAT('2024-12-01T00:00', '%h') AS `时(12小时值)`,

DATE_FORMAT('2024-12-01T00:00', '%Y%m') AS `年月` ,
DATE_FORMAT('2024-12-01T00:00', '%Y%m%d') AS `年月日` 

-- 实际应用中,可以将db中的时间,跟传递的时间都格式化,然后再比较
-- 这样就可以方便的按月、按年、按天比较了

在这里插入图片描述
– 实际应用中,可以将db中的时间,跟传递的时间都格式化,然后再比较这样就可以方便的按月、按年、按天比较了

7、返回今天是星期几

-- 周一Monday、周二Tuesday、周三Wednesday、周四Thursday、周五Friday、周六Saturday、周日Sunday、 
SELECT DAYNAME(CURDATE()) ;


-- 返回周几的数字,但是周日=1,周一=2,以此类推
SELECT DAYOFWEEK(CURDATE()); 

8、计算日期是本年、本月的第几天

-- 返回给定日期是本年的第几天
SELECT DAYOFYEAR('2023-08-25 11:11:11'); -- 237

-- 返回给定日期是本月的第几天
SELECT DAYOFMONTH('2023-08-25 11:11:11'); -- 25

-- 返回给定日期是本周的第几天(但是周日=1,周一=2,以此类推)
SELECT DAYOFWEEK('2023-08-25 11:11:11'); -- 6
SELECT (DAYOFWEEK('2023-08-25 11:11:11')-1); -- 5 可以手动减一

9、获取当月最后一天的日期

-- 获取给定日期当月的最后一天
SELECT LAST_DAY(NOW());
SELECT LAST_DAY('2023-07-01');-- 2023-07-31
SELECT LAST_DAY('2023-06-01');-- 2023-06-30

9、从给定时间中解析指定值

-- 字段解析
SELECT EXTRACT(YEAR FROM '2023-12-13 14:15:16'); -- 年 2023
SELECT EXTRACT(MONTH FROM '2023-12-13 14:15:16'); -- 月 12
SELECT EXTRACT(DAY FROM '2023-12-13 14:15:16'); -- 日 13
SELECT EXTRACT(HOUR FROM '2023-12-13 14:15:16'); -- 时 14
SELECT EXTRACT(MINUTE FROM '2023-12-13 14:15:16'); -- 分 15
SELECT EXTRACT(SECOND FROM '2023-12-13 14:15:16'); -- 秒 16
SELECT EXTRACT(MICROSECOND FROM '2023-12-13 14:15:16'); -- 微秒 0

-- 季度解析
SELECT EXTRACT(QUARTER FROM '2023-04-13 14:15:16'); -- 季度 1~3月第一季度 4~6第二季度 7~9第三季度 10~12第四季度

-- 自由拼接
SELECT EXTRACT(MINUTE_SECOND FROM '2023-04-13 14:15:16'); -- 拼接 分秒
SELECT EXTRACT(YEAR_MONTH FROM '2023-04-13 14:15:16'); -- 拼接 年月

10、时间戳\日期 互转

-- 日期转时间戳
SELECT UNIX_TIMESTAMP('2023-08-25'); -- 1692892800

-- 时间戳转日期
SELECT FROM_UNIXTIME(1692892800);    -- 2023-08-25 00:00:00

二、字符串函数

1、查询字符串的字符数

SELECT LENGTH('1234'); -- 4
SELECT CHAR_LENGTH('1234'); -- 4
SELECT CHARACTER_LENGTH('1234'); -- 4

2、拼接字符串

表数据:

image-20230825150738259

-- 结果拼接
SELECT CONCAT('查出的字符串为:',str) AS str FROM for_sql;

image-20230825150805022

3、匹配字符串位置下标

 SELECT FIND_IN_SET("c", "a,b,c,d,e"); -- 3 以 ,作为分割,返回指定字符串在给定字符串中的位置下标
 SELECT FIND_IN_SET("000", "a,b,c,d,e");-- 0 不存在的返回0
 SELECT FIND_IN_SET("李四","王五,张三,李四,赵六,刘琦"); -- 3 汉字也能匹配
 
 SELECT CONCAT('排名为:',FIND_IN_SET("李四","王五,张三,李四,赵六,刘琦")) ;-- 可以搭配组合拼接使用

4、大小写互转

 -- 大写转小写
 SELECT LOWER('RUNOOB'); -- runoob
 -- 小写转大写
 SELECT UCASE('runoob'); -- RUNOOB

5、去除空格

-- 去除开始和结尾处的空格
SELECT TRIM('    RUNOOB    ');-- 
-- 去除左侧的空格
SELECT LTRIM('    RUNOOB    ');-- 
-- 去除右侧的空格
SELECT RTRIM('    RUNOOB    ');-- 

6、截取字符串

-- 从字符串 RUNOOB 中的第 2 个位置截取 3个 字符,返回UNO
SELECT SUBSTR("RUNOOB", 2, 3); -- UNO
SELECT SUBSTRING("RUNOOB", 2, 3); -- UNO

7、反转字符串

-- 反转字符串
SELECT REVERSE('abc'); -- cba

8、字符串比较

-- 比较两个字符串,如果这两个字符串相等返回0,如果第一个参数是根据当前的排序小于第二个参数顺序返回-1,否则返回1。
SELECT STRCMP("runoob", "runoob"); -- 0
SELECT STRCMP("runoob", "runoob11");-- -1
SELECT STRCMP("runoob11", "runoob");-- 1

9、根据 符号 截取字符串

-- SUBSTRING_INDEX(str,sep,num) str表示操作的字符串  sep是区分的符号 num是一共取几个,正数是从左往右数负数是从右往左数

SELECT SUBSTRING_INDEX("RUN,OOB,STR", ',', -1);  -- STR
SELECT SUBSTRING_INDEX("RUN,OOB,STR", ',', -2); -- OOB,STR
SELECT SUBSTRING_INDEX("RUN,OOB,STR", ',', 1);  -- RUN
SELECT SUBSTRING_INDEX("RUN,OOB,STR", ',', 2); -- RUN,OOB

10、查询字符串的长度


SELECT CHAR_LENGTH(str),str FROM `for_sql`; --

在这里插入图片描述

11、查询出的多行的相同列进行拼接

初始的表视图

-- 初始表
SELECT 
  sur.`user_id` AS user_id,
  sr.`role_name`,
  sr.`role_code` 
FROM
  sys_user_role sur 
  LEFT JOIN `sys_role` sr  ON sur.`role_id` = sr.`id` 

在这里插入图片描述
要将相同user_id 的角色名称拼接起来

GROUP_CONCAT(列名,‘加后缀,一般为空’)
在这里插入图片描述
注意添加group by

12、从逗号分隔的字符串中,精准匹配单个字符串

例如,现在pass_word中有以逗号分隔的数据,现在想去匹配数字1,但不想匹配到11、12、13。可以使用 **FIND_IN_SET(要匹配的字符串,表中字段名)**函数
在这里插入图片描述
结果如下:
在这里插入图片描述
注意:该函数是有返回值的。
-如果找到 needle,则返回其在列表中的位置(从 1 开始计数)。
-如果没找到,则返回 0。
-如果 haystack_list 是空字符串,则返回 0。
-如果任何一个参数为 NULL,则返回 NULL。

所以更合适的写法为

SELECT * FROM `user_info` WHERE FIND_IN_SET('NULL',pass_word)> 0;

三、数字函数

1、将数字进行格式化,并指定小数位数

 -- 格式化数字,并保留5位小数
 SELECT FORMAT(250500.5634, 5); 

image-20230826164206433

2、取绝对值

-- 计算绝对值
SELECT ABS(-12); -- 12

3、聚合函数 - 求各种值

image-20230826194757033

 -- 列求和 空值会被忽略
 SELECT SUM(num) FROM `for_sql`;-- 55
 -- 列求平均值 空值会被忽略
  SELECT AVG(num) FROM `for_sql`;-- 27.5
 -- 列求最大数
  SELECT MAX(num) FROM `for_sql`;-- 35
 -- 列求最小值
  SELECT MIN(num) FROM `for_sql`;-- 20
 -- 返回满足条件的行数,
  SELECT COUNT(1) FROM `for_sql`; -- 3
  SELECT COUNT(num) FROM `for_sql`; -- 2 ()内给字段的话,字段为null的行就不统计
 

4、向上\向下取整

-- 向上取整
SELECT CEIL(1.5);-- 2
SELECT CEILING(1.5); -- 2
-- 向下取整
SELECT FLOOR(1.5); -- 1

5、四舍五入求整

SELECT ROUND(1.000);-- 1
SELECT ROUND(1.456);-- 1
SELECT ROUND(1.5);  -- 2
SELECT ROUND(1.555);-- 2

6、四舍五入求指定位数小数

-- 上面四舍五入求整,其实就是没指定保留位数,默认为0位小数
SELECT ROUND(1.000,2);-- 1.00
SELECT ROUND(1.456,1);-- 1.5
SELECT ROUND(1.5,1);  -- 1.5
SELECT ROUND(1.555,2);-- 1.56

6、取随机数

-- 返回 0 到 1 的随机数,若()里面有数字,RAND(x),x相同时,返回值相同
SELECT RAND();-- 0.6380155502241249
SELECT RAND(12); -- ()中有值的时候,回根据给定值去计算一个随机数,括号内值不变,随机数就不变
SELECT RAND(13);

7、取列中最大值、最小值

-- 求多个列中最大值
SELECT GREATEST(3, 12, 34, 8, 25);-- 34
-- 求多个列中最小值
SELECT LEAST(3, 12, 34, 8, 25);-- 3

8、求给定值的正负号

-- 返回 给定值的符号,负数返回-1、0返回0、正数返回1
SELECT SIGN(-10);-- -1
SELECT SIGN(0);-- 0
SELECT SIGN(10);-- 1

9、指定保留小数位

-- 不进行四舍五入,不够小数位就补0
SELECT TRUNCATE(1.23456,1); -- 1.2
SELECT TRUNCATE(1.23456,3); -- 1.234
SELECT TRUNCATE(1.23456,6); -- 1.234560

四、高级函数

1、判断处理

IF(expr,v1,v2)如果表达式 expr 成立,返回结果 v1;否则,返回结果 v2

image-20230826194009084

-- num大于三十的输出,不大于三十的输出0
SELECT IF(num>30,num,0) FROM `for_sql`;

结果:

image-20230826194043125

-- num值为空的按0输出,其余正常输出
SELECT IF(num IS NULL,0,num) FROM `for_sql`;

image-20230826194056336

2、判空处理值

相当于是IF()的特例,只处理为空的情况

-- 如果num值为空,就用0替换
SELECT IFNULL(num,0) FROM `for_sql`;

3、case…when的用法

① 等值判断:可以实现多条件的查询值匹配筛选

-- case 某个列字段,然后when 这个列的值满足某个条件时,将额外加一列用以描述该字段,必须要使用end结尾,否则报错
-- 最好使用else将其他值统一描述,不加不会报错,只是额外用来描述的这一列,到该行数据时会为空
SELECT 
  num,
  CASE num 
  WHEN 35 THEN '分数为35' 
  WHEN 20 THEN '分数为20' 
  ELSE '其余分数' 
  END AS str 
FROM
  `for_sql` ;

image-20230826231610704

②条件区间判断

-- 注意,如果是需要判断表达式,那再case的时候就不要指定字段了
-- 判断不为空,要使用 is not null
SELECT 
  num,
  CASE 
  WHEN num =100                    THEN '满分,优秀'
  WHEN num >=60 AND num < 100      THEN '分数大于30' 
  WHEN num >0  AND num <60         THEN '分数未及格' 
  WHEN num = 0 AND num IS NOT NULL THEN '零分'
  ELSE '未打分' 
  END AS str 
FROM
  `for_sql` ;

image-20230826234321610

③搭配其他函数使用

可用于统计及格率,将大于60更改为1,小于60更改为0;然后使用sum进行求和,这样就只会求和及格的数量,然后在除以总数,及得到及格率;

image-20230826234548257

4、坐标距离函数

-- st_distance_sphere函数计算两个point对象之间的距离
-- point()函数将经纬度转换成point对象		
SELECT 
  st_distance_sphere (
    POINT ('113.625246', '25.746557'),
    POINT ('125.625246', '25.746557')
  ) AS distance    -- 1201453.1503102053米

五、系统信息函数

1、数据库信息

-- 返回当前用户
SELECT USER(); -- webUser@223.88.63.102

-- 返回当前数据库名
SELECT DATABASE();-- module-learn

-- 返回当前数据库版本号
SELECT VERSION(); -- 8.0.13

2、将数据库自增列修改为指定值

前提:之所以不用指定字段名,是因为一张表里面只允许有一个自增列

-- 将某表的自增改为指定值
ALTER TABLE XXX AUTO_INCREMENT = 11804; 

六、语句

1、更新一个表的字段值等于另一个表的字段值

MySQL:
update 
	B inner join A on B.userId=A.userId
set 
	B.username = A.username,
	B.phone = A.phone 

-- 后面还可以加 where 来针对两个表进行数据筛选

示例 :
在这里插入图片描述
在这里插入图片描述
更新语句:

-- 将for_sql表中的str字段更新为user_info 表中的user_name字段;
-- 关联关系为for_sql与user_info 的id相同
UPDATE `for_sql` INNER JOIN user_info 
ON `for_sql`.`id`=user_info.id 
SET `for_sql`.str=user_info.user_name
WHERE user_info.`id`='1' AND for_sql.`id` = '1'

结果:

在这里插入图片描述

2、纵表转横表

有查询语句,为查某个人的不同类型的个数,按照表结构查出来是纵向的,如下:

 -- 不指定省区,只看省总下每个客户的类型的数量,旧数据客户的省区可能与省总不同(暂不考虑)
SELECT 
 IFNULL(sur.sys_user_manage_id ,oui.sys_user_id) AS manage_id,
 ui.province_code,
 ui.user_info_type,
 COUNT(1)  
FROM `user_info` ui LEFT JOIN `oc_user_info` oui ON ui.id = oui.user_info_id
LEFT JOIN `sys_user_relation`  sur ON oui.sys_user_id = sur.sys_user_id
WHERE ui.is_sys_flag = '0' AND ui.province_code IS NOT NULL
GROUP BY ui.province_code,ui.user_info_type ,manage_id
HAVING manage_id = '100252' AND province_code = '640000'

在这里插入图片描述

现在需要将它改成一条数据,也就是横向一条数据展示,即为纵表转横表
语句如下:

-- 不指定省区,只看省总下每个客户的类型的数量,旧数据客户的省区可能与省总不同(暂不考虑)
-- 纵表转横表
SELECT 
 IFNULL(sur.sys_user_manage_id ,oui.sys_user_id) AS manage_id,
 ui.province_code,
 -- 因为需要计算,因此使用sum函数,而sum函数是将每一天加起来,因此每一条满足的应该then 为 1才能正确计数
 SUM(CASE ui.user_info_type WHEN '1' THEN 1 ELSE 0 END) '1',
 SUM(CASE ui.user_info_type WHEN '2' THEN 1 ELSE 0 END) '2',
 SUM(CASE ui.user_info_type WHEN '3' THEN 1 ELSE 0 END) '3' 
FROM `user_info` ui LEFT JOIN `oc_user_info` oui ON ui.id = oui.user_info_id
LEFT JOIN `sys_user_relation`  sur ON oui.sys_user_id = sur.sys_user_id
WHERE ui.is_sys_flag = '0' AND ui.province_code IS NOT NULL
GROUP BY ui.province_code,manage_id
HAVING manage_id = '100252' AND province_code = '640000'

3、拿MD5加密后的文本去数据库过滤明文

-- 1230 MD5加密之后是 4122cb13c7a474c1976c9706ae36521d
SELECT id FROM `user_info` WHERE MD5(id) = '4122cb13c7a474c1976c9706ae36521d'

结果如图:

在这里插入图片描述

4、查询某个字段去重统计的数量

select count(distinct 去重字段) from 表

5、对字符串类型的数字进行排序

如果直接对字符串类型的数字进行排序,它会先比较首字母,然后依次往后比较,这样是不对的。可以用下面的语句进行排序

-- 针对该字段进行运算,强制将其改成数字类型,然后再排序即可
SELECT * FROM `bone_tool_box` ORDER BY id+0 DESC

6.

​ – 结束 –

​

别再手动写时间戳了!用SQLAlchemy的Mixin和func.now()实现自动记录(附完整代码) 本文详细介绍了如何利用SQLAlchemy的Mixin模式和func.now()函数实现时间戳的自动化管理,避免手动重复代码。通过封装TimestampMixin类,开发者可以轻松为模型添加created_at和updated_at字段,并确保时间戳的一致性和准确性。文章还涵盖了时区处理、批量更新等高级技巧,并提供了完整的Flask集成示例代码。 阅读详情

相关推荐

SQLite:TIMESTAMP类型使用

SQLite是一种嵌入式SQL数据库引擎,被广泛应用于移动平台和嵌入式设备中。它具有轻量级、开源、无服务器的特点,可以在各种操作系统上使用,并且无需配置和管理。SQLite支持常见的SQL语法和操作,包括创建表、插入数据、更新数据、查询数据等。SQLite是一种轻量级、开源的嵌入式SQL数据库引擎,使用方便,常被应用于移动平台和嵌入式设备。在SQLite中使用CURRENT_TIMESTAMP函数可以获取当前时间戳,但需要注意的是,它返回的时间戳是基于GMT时区的,不是基于本地机器的时区。

permike的专栏 4430

SQL Server中timestamp(时间戳)

SQLServertimestamp数据类型与时间和日期无关。SQLServertimestamp是二进制数字,它表明数据库中数据修改发生的相对顺序。实现timestamp数据类型最初是为了支持SQLServer恢复算法。每次修改页时,都会使用当前的@@DBTS值对其做一次标记,然后@@DBTS加1。这样做足以帮助恢复过程确定页修改的相对次序,但是time...

aixun4106的博客 3072

SQL 高级用法实战:窗口函数、表连接、子查询,解决 80% 复杂数据需求

本文介绍了SQL三大高级用法:窗口函数、表连接和子查询,通过实际案例演示如何解决复杂数据需求。窗口函数可实现分组统计不合并行,包括排名函数(ROW_NUMBER/RANK/DENSE_RANK)和聚合窗口函数;表连接重点讲解4种连接方式区别及使用场景;子查询详解WHERE/FROM/EXISTS三种应用场景。文章还提供综合实战案例,将三大技术结合使用,并分享了先写简单查询再逐步优化、使用CTE提高可读性、注意NULL处理等实用经验。这些高级用法掌握后能解决80%的复杂数据查询需求。

qq_55786128的博客 992

SQL时间函数

SQL语句 时间函数

nlhkfcdxb的博客 2605

SQL AVG() 函数实战:3种高级用法与子查询性能对比分析

本文深入探讨SQL AVG()函数的高级应用,包括分组聚合、窗口分析与性能优化。通过实战案例展示如何利用AVG()进行电商数据分析,比较不同实现方案的性能差异,并提供索引优化、物化视图等实用技巧,帮助开发者提升数据库查询效率。

ciqiaofu0192的博客 367

深入理解 SQL 中的 DATEDIFF 函数

DATEDIFFDATEDIFF函数在 SQL 中是一个用于计算两个日期之间差值的重要工具。不同数据库实现了不同版本的DATEDIFF,它们在功能和语法上有所不同。本文将详细解析DATEDIFF的用法、数据库间差异、复杂场景中的应用,以及替代方案。DATEDIFFDATEDIFF函数用于计算两个日期或日期时间值之间的差异。它的返回值通常是整数,表示日期差值的指定单位(如天、月、年等)。通过DATEDIFF,可以快速完成日期相关的计算,例如年龄计算、活动周期分析、时间跨度计算等。DATEDIFF。

m0_74824954的博客 1441

SQL获取目标时间点或日期的方法

1.时间函数直接获取系统时间点、日期 (1)NOW函数 ①语法:Now() ②作用:获取当前系统的日期和时间点。 例:输入“=NOW()”返回“2022-4-16 16:23:26”,空格左边是日期,右边是时间点。 (2)GETDATE函数 ①语法:GETDATE() ②作用: 例:输入“=TODAY()”返回“2022-4-16 16:23:26.243” (3)CURDATE函数 ①语法:CURDATE() ②作用:获取系统当前日期。 例: (4)CURTIME函数 ①语法

weixin_50853979的博客 2万+

MySQL系列: sql语句获取当前日期、时间、时间戳

目录 获得当前日期、时间 当前时间戳 时间戳转日期字符串 获得当前日期、时间 select NOW() select curdate() ; select curtime() 当前时间戳 时间戳转日期字符串

NIO4444 1698

SQL 实战:聚合函数高级用法 – 多层分组与动态统计

通过嵌套使用。

秋元的博客 1461

silvaco——GaN HEMT探索

上图为输出特性曲线 ,分别是在栅压为1v、3v、5v的情况下,可以看出在1v时器件处于截止状态,只有非常小近似于0的电流通过,随着栅压逐渐增大,沟道开启,产生漏极电流。上图为栅极漏电流曲线和转移特性曲线以及其提取的参数,可以看到阈值电压为=1.30249V,当栅压为0v时,Id=8.01032e-006,当栅压为5V时,Ig=3.11627e-006。albrct.n,低场迁移率模型,bn.albrct,an.albrct是albrct模型中的参数,可以由用户自己设定。lat.temp,晶格自热模型;

weixin_61913839的博客 7618

OPC DCOM详细配置方法 - 不关防火墙不换登陆用户

1. 前言   OPC DCOM的设置是实现跨网络OPC通信的基础,现有的一些OPC DCOM配置教程虽然讲解了如何配置DCOM,但没有讲清楚为什么要这么做,而且各个教程涉及的配置方法也不尽相同。   为了彻底搞清楚OPC DCOM的配置过程,我重新做了两台机器的系统,一台是Windows 7 32位,一台是Windows 10 64位,并且重零开始完整的测试了正常运行OPC DCOM所需的最少的...

steventian72的博客 3万+

SQL COUNT函数详解:从基础到高级用法

COUNT函数是SQL中最基础的聚合函数之一,用于统计行数或非NULL值数量。其工作原理根据参数不同而变化:COUNT(*)统计所有行,COUNT(列名)只计算非NULL值,COUNT(DISTINCT)则实现去重计数。在数据库优化中,合理使用COUNT能显著提升查询性能,特别是在分页查询、数据质量检查和业务指标统计等场景。通过创建合适索引、避免全表扫描和使用近似计数等技巧,可以优化COUNT操作。在MySQL和PostgreSQL等主流数据库中,COUNT(*)已针对性能做了专门优化,而COUNT(DIS

weixin_32705179的博客 192

相机通用类之海康相机,软触发硬触发(飞拍),并输出halcon格式对象

如何显示图像:可以访问我文章开头的博客,通过编写相机通用类即可,程序中是有继承通用类,通过访问相机通用的获取图像数据,从而传输图像数据。具体可以查看相机通用类。整体过程其实比较简单,由于海康相机没有像一些品牌相机一样可以直接使用序列号开启相机,所以我们需要通过对相机信息进行索引,根据索引到的相机序列号来开启相机。

m0_51559565的博客 7620

使用聚集函数 SQL语言的高级用法

计算诸如平均值和总和的函数被称为聚集函数(Aggregate Functions )。当使用聚集函数时,SQLServer对整个表或表里某个组中的字段进行汇总、计算,然后为它创建相应字段的单个的值。 可以在SELECT语句中单独使用聚集函数,也可以与语句GROUP BY联合使用; 除了COUNT(*)函数,如果记录集中没有满足WHERE子句的记录,则所有的聚集函数都将返回空值。如果没有满足...

ANNA 374

Python 复现AlexNet框架代码

【代码】Python 复现AlexNet框架代码。

Quintin 2421

Sigrity System SI SerialLink模式进行SFP+协议仿真分析-PCB操作指导

Random(Rj):随机抖动,该抖动用高斯概率分布来描述,通常是由热噪声和其它随机噪声引起的,默认为1%UI RMS(平均值),即和标准值的偏差为1%UI。Random(Rj):随机抖动,该抖动用高斯概率分布来描述,通常是由热噪声和其它随机噪声引起的,默认为1%UI RMS(平均值),即和标准值的偏差为1%UI。Random(Rj):随机噪声,是由信号电压的随机波动引起的,默认为1mv RMS(平均值),即和标准值的偏差为1mv。

weixin_54787054的博客 508

SQL窗口函数的高级用法:ROW与RANGE的灵活使用

在 SQL 中,窗口函数(Window Functions)允许用户对与当前行相关的数据子集执行计算,而不需要使用复杂的子查询或临时表。窗口函数通常与OVER()子句一起使用,以定义窗口的边界和如何对行进行分组。在OVER()子句中,ROWS和RANGE是两个重要的子句,用于指定窗口帧的边界。

weixin_44228413的博客 2040

AUTOSAR EcuM模块介绍

AUTOSAR EcuM概述 AUTOSAR EcuM全称是Autosar ECU State Manager,位于Autosar BSW中System Service模块中,是一个独立于硬件的模块。 其主要作用是管理ECU上下电启动的状态,具体为: 初始化启动操作系统所需要的BSW(Basic Software)模块 为睡眠阶段和随后的唤醒完成微控制器的配置准备 管理ECU上的所有唤醒事件(EcuM通过唤醒验证协议验证已发生的唤醒,区分真实的唤醒事件,防止误唤醒) EcuM支持的特性列表 EcuM具有

酒无忧的博客 2996

select into from 用法_Play with SQL--SQL高级用法

关于sql的高级用法以前很少接触,在很多场景下其实是很实用的。一,知识要点如下。二,数据准备,依然是学校四表,这次需要加上一个class表。insert into class (学号,班级,成绩) values ('0001','401',95); insert into class (学号,班级,成绩) values ('0002','401',95); insert into class (学...

weixin_39637233的博客 424

Python实现FFT、小波变换和数据压缩

小波变换是一种分析信号的方法,可以分解信号成为多个尺度和频率的分量,从而更好地理解和处理信号。在Python中,我们可以使用pywt库来实现小波变换。在Python中,我们可以使用numpy库中的fft模块来实现FFT。数据压缩是一种将数据表示成更紧凑的形式的方法,可以减少存储空间和传输带宽。综上所述,Python提供了很多方便的工具来实现各种信号处理和数据压缩的方法。本文将介绍Python中如何实现傅里叶变换(FFT)、小波变换以及如何使用它们来进行数据压缩。Python实现FFT、小波变换和数据压缩。

学习使你进步。 693

手游功耗优化:从猜想到硬核实测

功耗本质是“硬件在吃电”,要看电流/功率曲线,而不是只看帧率和温度;定量 = 有数字、有曲线、有对比能说“降了 15%”、“峰值从 7W 降到 5.5W”,而不是“我感觉凉快点”;工具方面:大厂会用外接功率仪 + 手机/芯片厂内部平台;平时也会用 Android/iOS/引擎自带的工具做趋势分析;流程上:选典型机型和场景 → 跑脚本采集 → 对齐 Profiler 数据 → 分析 CPU/GPU/网络谁在吃电;再通过版本对比、画质/帧率组合测试,指导配置和优化。这是一个。

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 180

SQL高级用法利用窗口函数实现复杂的数据分析与报表生成

将SUM()、AVG()、MAX()、MIN()等聚合函数与OVER()子句结合使用,可以创建同时包含详细数据和各级汇总的报表。在销售业绩、学生成绩等需要排名的报表场景中,ROW_NUMBER()、RANK()和DENSE_RANK()函数发挥着关键作用。例如,在生成销售部门月度业绩报表时,可以使用PARTITION BY department_id按部门分区,ORDER BY sales_amount DESC排序,从而快速计算出每个销售人员在部门内的业绩排名,为绩效评估提供清晰的数据支持。

zy625080069的博客 397

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

上一篇: Typora图片云保存
下一篇: 更优雅的判空 - Optional类的使用
Adda_Chen
博客等级 码龄7年 1214粉丝 30原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值