您好!欢迎访问家园网-www.jy.wang!

家园网

SQL Server 日期格式转换

网络 作者:本站 点击:

--将日期格式中的“-”转化为“/”
SELECT ISBN,bookname, REPLACE(CONVERT(char(10),intime,120),'-','/') 
AS 数据录入日期 
FROM bookinfo ORDER BY ISBN;

SQL Server 日期格式转换代码逐行讲解

这段代码的作用是:从图书信息表中查询数据,并将日期格式中的 - 替换为 /


一、代码整体结构

sql

SELECT 
    ISBN,
    bookname, 
    REPLACE(CONVERT(char(10), intime, 120), '-', '/') AS 数据录入日期 
FROM bookinfo 
ORDER BY ISBN;


二、逐部分讲解

第1-2行:普通字段查询

sql

SELECT 
    ISBN,
    bookname,

字段含义
ISBN图书的唯一标识号(国际标准书号)
bookname图书名称

第3行:日期格式转换(核心)

sql

REPLACE(CONVERT(char(10), intime, 120), '-', '/') AS 数据录入日期

这一行可以拆解为三层嵌套函数,从内到外依次是:

text

REPLACE( CONVERT( char(10), intime, 120 ), '-', '/' )
   ↑         ↑           ↑       ↑      ↑    ↑
   │         │           │       │      │    └── 替换成的字符
   │         │           │       │      └─────── 要被替换的字符
   │         │           │       └────────────── 要转换的字段
   │         │           └────────────────────── 目标数据类型(固定长度10字符)
   │         └────────────────────────────────── 转换函数
   └──────────────────────────────────────────── 替换函数


三、CONVERT(char(10), intime, 120) 详解

参数含义
第1个参数char(10)转换后的数据类型:固定长度10个字符的字符串
第2个参数intime要转换的字段名(录入日期)
第3个参数120日期格式代码,代表 yyyy-mm-dd hh:mi:ss(24小时制)

120 格式代码的含义

代码格式示例
120yyyy-mm-dd hh:mi:ss2024-04-14 15:30:25

注意:这里 char(10) 只取前10个字符,所以 yyyy-mm-dd 正好10个字符,时间部分会被截掉。

转换过程

原始值(intime)CONVERT(char(10), intime, 120) 结果
2024-04-14 15:30:252024-04-14
2023-12-25 08:00:002023-12-25

四、REPLACE() 函数详解

词源

单词词源含义
REPLACE古法语 re-(再次)+ placer(放置)替换、取代

语法

sql

REPLACE(原字符串, 要被替换的子串, 替换成的子串)

在本例中

sql

REPLACE('2024-04-14', '-', '/')

参数含义
第1个'2024-04-14'原字符串
第2个'-'要找的字符(连字符)
第3个'/'替换成斜杠

结果'2024/04/14'


五、完整转换流程图

text

原始数据
┌─────────────────────────────────────────────┐
│ intime = 2024-04-14 15:30:25                │
└─────────────────────────────────────────────┘
                    ↓
     CONVERT(char(10), intime, 120)
                    ↓
┌─────────────────────────────────────────────┐
│ 结果:'2024-04-14'(只取日期部分)           │
└─────────────────────────────────────────────┘
                    ↓
     REPLACE('2024-04-14', '-', '/')
                    ↓
┌─────────────────────────────────────────────┐
│ 结果:'2024/04/14'(连字符换成斜杠)         │
└─────────────────────────────────────────────┘
                    ↓
            AS 数据录入日期
                    ↓
┌─────────────────────────────────────────────┐
│ 最终显示:2024/04/14                        │
└─────────────────────────────────────────────┘


六、执行效果示例

假设 bookinfo 表数据

ISBNbooknameintime
978-7-111-12345-6数据库原理2024-04-14 15:30:25
978-7-302-56789-0计算机网络2023-12-25 08:00:00

查询结果

ISBNbookname数据录入日期
978-7-111-12345-6数据库原理2024/04/14
978-7-302-56789-0计算机网络2023/12/25

七、ORDER BY ISBN 的作用

sql

ORDER BY ISBN

单词词源含义
ORDER拉丁语 ordo(顺序、排列)排序
BY古英语 (靠近、通过)按照

作用:查询结果按照 ISBN 字段的升序排列(默认)。


八、其他数据库的等价写法

数据库

等价写法

SQL Server

REPLACE(CONVERT(char(10), intime, 120), '-', '/')

MySQL

REPLACE(DATE_FORMAT(intime, '%Y-%m-%d'), '-', '/')

Oracle

REPLACE(TO_CHAR(intime, 'YYYY-MM-DD'), '-', '/')

PostgreSQL

REPLACE(TO_CHAR(intime, 'YYYY-MM-DD'), '-', '/')


九、总结

函数作用
CONVERT(char(10), intime, 120)将日期时间转换为 YYYY-MM-DD 格式的字符串
REPLACE(..., '-', '/')将连字符 - 替换为斜杠 /
AS 数据录入日期给结果列起别名
ORDER BY ISBN按 ISBN 排序

一句话总结:这段代码先通过 CONVERT 函数将日期时间字段转换为 YYYY-MM-DD 格式的字符串,再用 REPLACE 函数将连字符 - 替换为斜杠 /,最终得到 YYYY/MM/DD 格式的日期显示。ORDER BY ISBN 确保结果按图书编号排序


标签: