京公网安备 11010802034615号
经营许可证编号:京B2-20210330
在数据处理与分析工作中,数据格式的规范性是保证后续分析准确性的基础。在 SQL Server 数据库中,经常会遇到存储为字符串格式的日期数据,为了便于进行日期相关的计算、筛选和排序等操作,需要将其转换为日期格式。当字符串中的日期信息并非标准格式,或者包含多余字符时,还需要先进行字符串截取操作,再完成格式转换。接下来,我们将深入探讨 SQL Server 中字符串截取转日期的实用方法与技巧。
在 SQL Server 中,常用的字符串截取函数有SUBSTRING()、LEFT()和RIGHT() 。 SUBSTRING()函数:该函数可以从指定字符串中提取指定长度的子字符串,语法为SUBSTRING ( expression, start, length ) 。其中,expression是要提取子字符串的字符串表达式;start指定子字符串在原字符串中的起始位置;length指定要提取的子字符串的长度。例如,SELECT SUBSTRING('2024-12-31 15:23:45', 1, 10),会从字符串2024-12-31 15:23:45中截取从第 1 个字符开始,长度为 10 的子字符串,即2024-12-31。
LEFT()函数:用于从字符串的左侧开始提取指定数量的字符,语法为LEFT ( expression, integer_expression ) 。expression是字符串表达式,integer_expression指定要提取的字符数量。比如,SELECT LEFT('2024-12-31 15:23:45', 10),同样会得到2024-12-31。 RIGHT()函数:与LEFT()函数相反,从字符串的右侧开始提取指定数量的字符,语法为RIGHT ( expression, integer_expression ) 。例如,字符串abc123,使用SELECT RIGHT('abc123', 3),将返回123。
SQL Server 中用于将字符串转换为日期格式的函数主要有CONVERT()和CAST() 。
CONVERT()函数:功能更为强大,可以按照指定的样式将字符串转换为日期格式,语法为CONVERT ( data_type [ ( length ) ], expression [, style ] ) 。data_type指定目标数据类型,如DATE、DATETIME等;length可选,指定数据类型的长度;expression是要转换的字符串表达式;style用于指定转换的样式。常见的日期样式有 101(mm/dd/yyyy)、120(yyyy - mm - dd hh:mi:ss(24 小时制))等。例如,SELECT CONVERT(DATE, '20241231', 112),会将字符串20241231按照样式 112(yyyymmdd)转换为日期格式。
CAST()函数:语法相对简单,直接将表达式转换为指定的数据类型,语法为CAST ( expression AS data_type ) 。例如,SELECT CAST('2024-12-31' AS DATE),可以将符合日期格式的字符串转换为DATE类型。但CAST()函数不能像CONVERT()函数那样指定转换样式,如果字符串格式不标准,使用CAST()函数可能会报错。
假设数据库中有一个orders表,其中order_time列存储的订单时间格式为订单号2024-12-31 15:23:45,我们只需要其中的日期部分并转换为日期格式。可以使用以下 SQL 语句:
SELECT CONVERT(DATE, SUBSTRING(order_time, 6, 10), 23)
FROM orders;
这里先使用SUBSTRING()函数从第 6 个字符开始截取长度为 10 的子字符串,得到2024-12-31,再使用CONVERT()函数,指定样式 23(yyyy - mm - dd)将其转换为日期格式。
若users表中的birthday列存储的生日格式为2024/12/31,要将其转换为标准的日期格式,可以使用CONVERT()函数进行转换:
SELECT CONVERT(DATE, birthday, 101)
FROM users;
通过指定样式 101(mm/dd/yyyy),实现将字符串2024/12/31转换为日期格式。
如果logs表的log_info列存储的日志信息格式为系统在2024年12月31日15时23分45秒发生错误,需要提取其中的日期并转换。可以这样编写 SQL 语句:
SELECT CONVERT(DATE, STUFF(STUFF(STUFF(SUBSTRING(log_info, CHARINDEX('20', log_info), 10), 5, 1, '-'), 8, 1, '-'), 11, 1, ' '), 23)
FROM logs;
首先使用SUBSTRING()函数结合CHARINDEX()函数找到日期起始位置并截取包含日期的子字符串,然后通过多次使用STUFF()函数对字符串进行替换,将其格式调整为yyyy - mm - dd,最后使用CONVERT()函数转换为日期格式。
在 SQL Server 的实际数据处理过程中,字符串截取转日期是一项基础却又关键的技能。通过灵活运用SUBSTRING()、LEFT()、RIGHT()等字符串截取函数,以及CONVERT()、CAST()等转换函数,结合不同的数据场景,能够高效地将不规范的字符串日期数据转换为标准格式,为后续的数据分析与处理工作奠定坚实基础。
免费加入阅读:https://edu.cda.cn/goods/show/3151?targetId=5147&preview=0
数据分析咨询请扫描二维码
若不方便扫码,搜微信号:CDAshujufenxi
在业务数据可视化中,热力图(Heat Map)是传递“数据密度与分布特征”的核心工具——它通过颜色深浅直观呈现数据值的高低,让“ ...
2025-11-26在企业数字化转型中,业务数据分析师是连接数据与决策的核心纽带。但“数据分析师”并非单一角色,从初级到高级,其职责边界、能 ...
2025-11-26表格结构数据以“行存样本、列储属性”的规范形态,成为CDA数据分析师最核心的工作载体。从零售门店的销售明细表到电商平台的用 ...
2025-11-26在pandas数据处理工作流中,“列标签”(Column Labels)是连接数据与操作的核心桥梁——它不仅是DataFrame数据结构的“索引标识 ...
2025-11-25Anaconda作为数据科学领域的“瑞士军刀”,集成了Python解释器、conda包管理工具及海量科学计算库,是科研人员、开发者的必备工 ...
2025-11-25在CDA(Certified Data Analyst)数据分析师的日常工作中,表格结构数据是最常接触的“数据形态”——从CRM系统导出的用户信息表 ...
2025-11-25在大数据营销从“粗放投放”向“精准运营”转型的过程中,企业常面临“数据维度繁杂,核心影响因素模糊”的困境——动辄上百个用 ...
2025-11-24当流量红利逐渐消退,“精准触达、高效转化、长效留存”成为企业营销的核心命题。大数据技术的突破,让营销从“广撒网”的粗放模 ...
2025-11-24在商业数据分析的全链路中,报告呈现是CDA(Certified Data Analyst)数据分析师传递价值的“最后一公里”,也是最容易被忽视的 ...
2025-11-24在数据可视化实践中,数据系列与数据标签的混淆是导致图表失效的高频问题——将数据标签的样式调整等同于数据系列的维度优化,或 ...
2025-11-21在数据可视化领域,“静态报表无法展现数据的时间变化与维度关联”是长期痛点——当业务人员需要分析“不同年份的区域销售趋势” ...
2025-11-21在企业战略决策的场景中,“PESTEL分析”“波特五力模型”等经典方法常被提及,但很多时候却陷入“定性描述多、数据支撑少”的困 ...
2025-11-21在企业数字化转型过程中,“业务模型”与“数据模型”常被同时提及,却也频繁被混淆——业务团队口中的“用户增长模型”聚焦“如 ...
2025-11-20在游戏行业“高获客成本、低留存率”的痛点下,“提前预测用户流失并精准召回”成为运营核心命题。而用户流失并非突发行为——从 ...
2025-11-20在商业数据分析领域,“懂理论、会工具”只是入门门槛,真正的核心竞争力在于“实践落地能力”——很多分析师能写出规范的SQL、 ...
2025-11-20在数据可视化领域,树状图(Tree Diagram)是呈现层级结构数据的核心工具——无论是电商商品分类、企业组织架构,还是数据挖掘中 ...
2025-11-17核心结论:“分析前一天浏览与第二天下单的概率提升”属于数据挖掘中的关联规则挖掘(含序列模式挖掘) 技术——它聚焦“时间序 ...
2025-11-17在数据驱动成为企业核心竞争力的今天,很多企业陷入“数据多但用不好”的困境:营销部门要做用户转化分析却拿不到精准数据,运营 ...
2025-11-17在使用Excel透视表进行数据汇总分析时,我们常遇到“需通过两个字段相乘得到关键指标”的场景——比如“单价×数量=金额”“销量 ...
2025-11-14在测试环境搭建、数据验证等场景中,经常需要将UAT(用户验收测试)环境的表数据同步到SIT(系统集成测试)环境,且两者表结构完 ...
2025-11-14