SQL函数:DAYOFWEEK简单使用返回星期

我们在数据库中存储时间字段时,偶尔会出现为了方便写入或者展示的原因使用了varchar字段对时间进行存储,今天我们来讲解如何对字符串时间字段返回星期。

用到的函数:DAYOFWEEK

使用示例:

SELECT
	execute_time 
FROM
	user_logs 
ORDER BY
	execute_time DESC 
	LIMIT 10;

SQL函数:DAYOFWEEK简单使用返回星期_第1张图片

现在获取的字段为“2024年01月09日00时42分04秒”

我们需要对它切片后再进行星期的返回:

SELECT     
    SUBSTRING(execute_time, 1, 11) as execute_date,     
		DAYOFWEEK(STR_TO_DATE(SUBSTRING(execute_time, 1, 11), '%Y年%m月%d日'))  as `星期时间`     
FROM user_logs          
GROUP BY execute_date      
ORDER BY execute_date DESC
limit 10;

SQL函数:DAYOFWEEK简单使用返回星期_第2张图片

我们通过SUBSTRING函数对字符串切片,再通过STR_TO_DATE函数把字符串转为时间类型。

这样,我们已经能获取到了日期对应的星期。

当然,我们需要注意,这样直接返回的星期,1代表周日,2代表周一,3代表周二,以此类推。不符合我们常规习惯,我们可以再进行优化下:

SELECT     
    SUBSTRING(execute_time, 1, 11) as execute_date,     
    CASE DAYOFWEEK(STR_TO_DATE(SUBSTRING(execute_time, 1, 11), '%Y年%m月%d日'))  
        WHEN 1 THEN '星期日'  
        WHEN 2 THEN '星期一'  
        WHEN 3 THEN '星期二'  
        WHEN 4 THEN '星期三'  
        WHEN 5 THEN '星期四'  
        WHEN 6 THEN '星期五'  
        WHEN 7 THEN '星期六'  
    END as `星期时间`      
FROM user_logs            
GROUP BY execute_date      
ORDER BY execute_date DESC
limit 10;

SQL函数:DAYOFWEEK简单使用返回星期_第3张图片

现在,返回的日期就符合我们日常使用的形式了。

你可能感兴趣的:(sql,数据库)