SqlServer 数据库

1
2
3
4
5
6
7
8
--获取当天时间
SELECT GETDATE()
--时间格式化
SELECT CONVERT(varchar, GETDATE(), 120) --2024-09-18 16:42:56
SELECT CONVERT(varchar(100), GETDATE(), 23) --2024-09-18
SELECT CONVERT(varchar, GETDATE(), 111) --2024/09/18
SELECT CONVERT(varchar, GETDATE(), 112) --20240918
SELECT CONVERT(varchar, GETDATE(), 8) --16:45:27
1
2
3
4
5
6
--DATENAME([DD/MM/YY...], [时间])
SELECT DATENAME(DD, '2024-09-02 00:00:00') --2
SELECT DATENAME(MM, '2024-09-02 00:00:00') --09
SELECT DATENAME(YY, '2024-09-02 00:00:00') --2024
SELECT DATENAME(DW, '2024-09-02 00:00:00')--星期一
SELECT DATENAME(Y, '2024-09-02 00:00:00') --246 (今年的第几天)
1
2
3
4
5
6
7
8
9
--DATEPART([DD/MM/YY...], [时间/字符类型])
SELECT DATEPART(DD, '2024-09-02 00:00:00') --2
SELECT DATEPART(MM, '2024-09-02 00:00:00') --9
SELECT DATENAME(YY, '2024-09-02 00:00:00') --2024
SELECT DATEPART(DW, '2024-09-02 00:00:00')--2 (星期日算第一天)
--FORMAT([时间类型], [d/dd....])
SELECT FORMAT(CONVERT(DateTime, '2024-09-02 00:00:00'), 'yyyy')--2024
SELECT FORMAT(CONVERT(DateTime, '2024-09-02 00:00:00'), 'MM')--09
SELECT FORMAT(CONVERT(DateTime, '2024-09-02 00:00:00'), 'dd')--02
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
--常见的需求总结:
SELECT CONVERT(varchar, GETDATE(), 120) --2024-09-18 16:42:56
SELECT CONVERT(varchar(100), GETDATE(), 23) --2024-09-18
SELECT FORMAT(CONVERT(DateTime, '2024-09-02 00:00:00'), 'D') --2024年9月2日
SELECT FORMAT(CONVERT(DateTime, '2024-09-02 00:00:00'), 'm') --9月2日
SELECT CONVERT(VARCHAR,
CASE
WHEN DATEPART(DW, GETDATE()) = 1 THEN DATEADD(dd, -6, GETDATE())
ELSE DATEADD(DD, - (DATEPART(dw, GETDATE()) - 2), GETDATE())
END, 23);--获取本周周一日期
SELECT CONVERT(VARCHAR,
CASE
WHEN DATEPART(DW, GETDATE()) = 1 THEN GETDATE()
ELSE DATEADD(DD, 8 - DATEPART(DW, GETDATE()), GETDATE())
END, 23);--获取本周日日期
SELECT DATEADD(MM, DATEDIFF(MM, 0, GETDATE()), 0) --获取本月第一天日期
SELECT DATEADD(MM, DATEDIFF(MM, 0, GETDATE()) + 1, -1)--获取本月最后一天日期

MySql 数据库

在MySQL中,你可以使用DATE_FORMAT()函数来格式化日期。DATE_FORMAT() 函数通常用于格式化 DATETIME 或 TIMESTAMP类型的字段

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
1.--
SELECT DATE_FORMAT(NOW(), '%Y-%m-%d');

2.//
SELECT DATE_FORMAT(NOW(), '%m/%d/%Y');

3.完整的日期和时间
SELECT DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%s');

4.小时和分钟
SELECT DATE_FORMAT(NOW(), '%H:%i');

5.星期几
SELECT DATE_FORMAT(NOW(), '%W'); -- 星期几(Sunday=0, ..., Saturday=6)

6.月份的名称
SELECT DATE_FORMAT(NOW(), '%M'); -- 月份的名称(January, ..., December)

7.月份的缩写
SELECT DATE_FORMAT(NOW(), '%b'); -- 月份的缩写(Jan, ..., Dec)

8.年份的最后两位数字
SELECT DATE_FORMAT(NOW(), '%y');

9.AM或PM
SELECT DATE_FORMAT(NOW(), '%p');

10.
SELECT DATE_FORMAT(NOW(), '%s');

如果你有一个非日期时间类型的字段,但你知道它包含的是日期或时间信息,
你可能需要先将其转换为 DATETIME 类型,然后再使用 DATE_FORMAT() 函数。
例如,如果一个 VARCHAR 字段包含日期时间字符串,你可以使用 STR_TO_DATE() 函数将其转换

--STR_TO_DATE() 函数将字符串转换为 DATETIME 类型,然后 DATE_FORMAT() 函数将其格式化为所需的格式
SELECT DATE_FORMAT(STR_TO_DATE(your_column, '%Y-%m-%d %H:%i:%s'), '%Y-%m-%d %H:%i:%s');