如何在 SQL Select 语句中将文本字段更改为日期字段
Posted
技术标签:
【中文标题】如何在 SQL Select 语句中将文本字段更改为日期字段【英文标题】:How to change a text field to a date field in SQL Select Statement 【发布时间】:2013-08-19 15:33:54 【问题描述】:我正在使用 SQL Report Builder 编写报告。我必须使用以下语句从文本字段 (customer_order_line_hist, field=message_text) 导出两个与日期相关的字段。
原始message_text字段除了日期信息外始终相同:“计划交货日期已从2013-06-28 00.00.00更改为2013-05-16 00.00.00”
我正在尝试将两个输出字段(FROM_DATE 和 TO_DATE)转换为日期时间字段或格式 mm/dd/yyyy。
我尝试了 CONVERT 和 CAST 功能,但没有成功。有什么想法吗?
Select SUBSTR(t.message_text, 49, 10) AS FROM_DATE,
SUBSTR(t.message_text, 72, 10) AS TO_DATE,
t.order_no,
t.line_no,
t.rel_no,
t.line_item_no,
t.history_no
FROM customer_order_line_hist t
Where t.message_text Like 'The planned delivery date%'
【问题讨论】:
您使用的是什么 DBMS? SQL Server、mysql 等 【参考方案1】:如果您的语法正确,Convert 应该可以工作。试试这个简化的测试:
declare @sText varchar(max)
select @sText = 'The planned delivery date has been changed from 2013-06-28 00.00.00 to 2013-05-16 00.00.00'
select convert(datetime, SUBSTRING(@sText, 49, 10)) AS FROM_DATE,
convert(datetime, SUBSTRING(@sText, 72, 10)) AS TO_DATE
【讨论】:
我的数据库实际上是 Oracle,我正在使用 PL/SQL Developer 来测试我的 select 语句。运行您建议的简化测试时,我收到以下错误消息。 ORA-06550:第 1 行,第 9 列; PLS-00103:当期望以下其中一个开始函数 pragma 过程子类型类型 当前光标删除之前存在时遇到符号“@” Oracle 数据库 11g 版本 11.2.0.3.0 - 64 位 PL/SQL 版本 11.2.0.3.0 核心 11.2.0.3.0 用于 64 位 Windows 的 TNS:版本 11.2.0.3.0 NLSRTL 版本 11.2 .0.3.0 感谢您的帮助。我使用“TO_DATE”函数自己解决了这个问题。 好消息。编码愉快。以上是关于如何在 SQL Select 语句中将文本字段更改为日期字段的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Oracle SQL 中将变量设置为 select 语句的结果