目录
1. 你想做什么
2.环境
3.研究
3-1. 仅日期
(1) 左功能
(2) SUBSTRING 函数
(3) CAST 函数
(4) 转换功能
(5) 奖励:我想把它变成一个斜线
(6)补充:CAST和CONVERT函数的区别
3-2. 仅限时间
4.最终代码
5. 参考
6. 最后
1. 你想做什么
SQLServer 中的表有一个日期时间列。
数据类型是日期时间。
日期时间格式如下。YYYY-MM-DD hh:mm:ss[.nnn]
这次以某种方式使用现有数据我想将日期和时间分开,所以我做了一些研究并将其放在一起。
示例:分为2022-10-04 6:56:24 → 2022-10-04 和06:56:24。
2.环境
- windows 10 版本 21H2
- 微软-IIS 10.0
- Microsoft SQL Server Management Studio 18.12.1
3. 调查
我尝试使用不同的函数来查看结果。
3-1. 仅日期
(1) 左功能
我试图通过指定前 10 个字符(包括连字符)来获取 2022-10-04。
<执行的 SQL>
SELECT
id,
name,
LEFT(time, 10) AS '日付'
FROM test_DB
<结果>
我能够得到10 04 2022。
(2) SUBSTRING 函数
剪切并返回指定字符串的函数。我试过了,因为它可以与 SQLServer 和 MySQL 一起使用。
SUBSTRING 函数
SUBSTRING([string], [cut start point], [number of characters to cut]);
- 第一个参数:字符串
- 第二个参数:切割起点
- 第三个参数:要剪切的字符数
<执行的 SQL>
SELECT
id,
name,
SUBSTRING(time, 1, 10) AS '日付'
FROM test_DB
<结果>
我收到一条错误消息,提示“参数的数量不对应”。
由于第一个参数是字符串,因此必须将其转换为字符串一次。
通过使用 CAST 函数将其转换为字符串并将其用作第一个参数来解决该错误。
CAST 函数
CAST(任何有效的表达式 AS 目标数据类型 [(数据类型长度)])
将一种数据类型的表达式转换为另一种数据类型。
<执行的 SQL>
SELECT
id,
name,
SUBSTRING(CAST(time AS nvarchar), 1, 10) AS '日付'
FROM test_DB
<使用 CAST 函数后的结果>
可以得到10 04 2022,与LEFT函数的结果相同。
(3) CAST 函数
感觉在(2)中转换成字符串会很麻烦,所以想知道用CAST函数能不能一次性得到。
<执行的 SQL>
SELECT
id,
name,
(CAST(time AS date)) AS '日付'
FROM test_DB
在 (2) 中的 SUBSTRING 函数中,我们将其转换为字符串,但这次我们指定了日期。
<结果>
由于默认日期格式是YYYY-MM-DD,我能够得到2022-10-04。
(4) 转换功能
类似于 CAST 函数,作为将一种数据类型的表达式转换为另一种数据类型的函数
有一个转换功能。
我试图看看我是否可以使用 CONVERT 功能得到它。
转换功能
CONVERT((目标数据类型[(数据类型长度)]),任意表达式[,任意整数表达式,指定如何转换表达式])
<执行的 SQL>
SELECT
id,
name,
(CONVERT(date, time)) AS '日付'
FROM test_DB
<结果>
类似于 CAST 函数,我能够得到2022-10-04。
(5) 奖励:我想把它变成一个斜线
我能够实现仅从 datetime 类型数据中获取日期的目标,但我想知道是否可以将其设为斜线,例如 2022/10/04 而不是 2022-10-04。
<执行的 SQL>
SELECT
id,
name,
(CONVERT(nvarchar, time, 111)) AS '日付'
FROM test_DB
<结果>
它是通过在 CONVERT 函数的末尾指定一个整数表达式来完成的。
转换功能
CONVERT((目标数据类型[(数据类型长度)]),任意表达式[,一个整数表达式,指定如何转换任意表达式])
您可以将 111 放在任何表达式之后,使其成为默认形式 yyyy/mm/dd。
(6)补充:CAST和CONVERT函数的区别
CONVERT 函数是 SQLServer 专有的,CAST 函数是符合 ISO 标准的。
3-2.仅限时间
时间可以使用与(5)中相同的公式获得。
<执行的 SQL>
SELECT
id,
name,
(CONVERT(nvarchar, time, 108)) AS '時間'
FROM test_DB
<结果>
您可以将 108 放入默认格式 hh:mi:ss。
如果将其设置为 114,则最多可以达到毫秒 (hh:mi:ss:mmm)。
4.最终代码
我可以使用 CONVERT 函数来拆分日期和时间。
SELECT
id,
name,
(CONVERT(date, time)) AS '日付',
(CONVERT(nvarchar, time, 108)) AS '時間'
FROM test_DB
5. 参考
6. 最后
这一次,业务中有一个请求,所以我调查了各种功能。
如果有任何错误或意见,请告诉我。
感谢您的阅读。
原创声明:本文系作者授权爱码网发表,未经许可,不得转载;
原文地址:https://www.likecs.com/show-308628609.html