首页 > 解决方案 > 如何在 SQL 中将数字转换为日期?

问题描述

我有一个名为的字段SECURED,其日期列为123120040320 实际上是12/31/204/03/20。我能够将该SELECT地区的日期转换为:

SELECT LEFT(SECURED, 2) + '/' + replace(replace(SECURED, LEFT(SECURED, 2), ''), 
       RIGHT(SECURED, 2), '') + '/' + RIGHT(SECURED, 2) as 'Modified SECURED as Date' 
WHERE CONVERT(date, SECURED, 101) 
      BETWEEN CONVERT(date, getdate() - 30, 101) 
          AND CONVERT(date, getdate(), 101) 

如何从SECURED列中提取日期为 30 天前的信息?

它不起作用,仍然将日期视为数字。

标签: sqlsql-servertsqldatewhere-clause

解决方案


如果secured是一个字符串,你可以做一些操作和一个简单的cast()

select convert(date, concat('20', right(secured, 2), left(secured, 4))

您可能会发现实际创建计算列很方便,因此它始终可用:

alter table t add secured_date as (try_convert(date, concat('20', right(secured, 2), left(secured, 4))

您甚至可以保留该列并创建索引,这样您的查询就更有效率了。


推荐阅读