SELECT SUBSTRING(replace(replace(replace(CONVERT(varchar, '2023-05-22 14:55:42', 120 ),'-',''),' ',''),':',''),0,9) 优化一下这段sql
时间: 2023-08-06 21:14:00 浏览: 34
可以使用 FORMAT 函数来简化 SQL 语句,如下所示:
```
SELECT FORMAT('2023-05-22 14:55:42', 'yyyyMMdd') AS result
```
其中,第一个参数是要转换的日期时间字符串,第二个参数是格式化字符串,将日期时间字符串转换为指定格式的字符串。在本例中,'yyyyMMdd' 表示将日期时间字符串转换为年月日的形式,例如:20230522。
相关问题
SELECT SUBSTRING(replace(replace(replace(CONVERT(varchar, '2023-05-22 14:55:42', 120 ),'-',''),' ',''),':',''),0,9) 转为SqlServer
在 Sql Server 中可以使用 SUBSTRING、REPLACE 和 CONVERT 函数来实现转换:
```sql
SELECT SUBSTRING(REPLACE(REPLACE(REPLACE(CONVERT(VARCHAR, '2023-05-22 14:55:42', 120), '-', ''), ' ', ''), ':', ''), 1, 8)
```
其中,`CONVERT(VARCHAR, '2023-05-22 14:55:42', 120)` 将日期时间类型转换为字符类型,格式为 `yyyy-mm-dd hh:mi:ss`,然后 `REPLACE` 函数去掉其中的 `-`、空格和 `:`,最后使用 `SUBSTRING` 函数截取前 8 个字符,即日期时间的年月日时分秒。
如何截取2023-05-31 16:51:53.000类型数字
可以使用 `DateTime` 的 `ToString` 方法来将日期格式化为指定的字符串,然后再使用 `Substring` 方法来截取需要的部分,例如:
```csharp
DateTime dt = new DateTime(2023, 5, 31, 16, 51, 53, 0);
string str = dt.ToString("yyyy-MM-dd HH:mm:ss.fff"); // 输出:2023-05-31 16:51:53.000
string str2 = str.Substring(0, 10); // 截取年月日部分,输出:2023-05-31
```
其中 `HH` 表示 24 小时制的小时数,`mm` 表示分钟数,`ss` 表示秒数,`fff` 表示毫秒数。将其它部分去掉即可只输出日期部分。`Substring` 方法的第一个参数表示截取的起始位置,第二个参数表示截取的长度。