【发布时间】:2019-04-12 03:05:40
【问题描述】:
我的文件名列看起来像“D181115.T000000”。我用下面的代码把它变成了一个字符串,看起来像'2018-11-15'。
select '20' + substring(filename, 2,2) + '-' + substring(filename, 4,2) + '-' + substring(filename,6,2)
from table_name
那我想把字符串转成日期类型(因为我需要按日期排序)
select convert(datetime, '20 + substring(filename, 2,2) + '-' + substring(filename, 4,2) + '-' + substring(filename,6,2)')
from table_name
然后我收到此错误消息:
数据类型 varchar 和 varchar 在减法中不兼容 运算符。
任何帮助将不胜感激!
【问题讨论】:
-
您使用的是哪个 dbms? (这些查询是特定于产品的。)
-
你在
'20后面少了一个单引号,那么它在做Substract操作:20 + substring(filename, 2,2) +减20 + substring(filename, 2,2) + ' -
您使用的是 SQL Server 吗?在这种情况下,您可以只使用
select cast('20' + substring('D181115.T000000', 2,6) as date)或select try_cast('20' + substring('D181115.T000000', 2,6) as date)。YYYYMMDD是公认的、明确的日期文字。另一方面,YYYY-MM-DD取决于DATEFORMAT设置 -
Then I want to convert the string to date type -
您应该小心字符串到日期的转换。最好从日期/日期时间开始而不是字符串日期。您可能永远不知道字符串日期
181115以什么格式被解释为'2018-11-15'或'2018-15-11'。只是想一想。
标签: sql string date sqldatatypes