【发布时间】:2021-03-17 16:31:49
【问题描述】:
我有一张表,其中有一列“绩效月”。此列的数据类型为 nvarchar(255),值从“202001”到“202012”。如何从该表中选择最近 5 个月的数据?
【问题讨论】:
-
理想情况下,您应该修复您的设计,不要使用
varchar来存储日期。使用日期和时间数据类型。
标签: sql sql-server converters
我有一张表,其中有一列“绩效月”。此列的数据类型为 nvarchar(255),值从“202001”到“202012”。如何从该表中选择最近 5 个月的数据?
【问题讨论】:
varchar 来存储日期。使用日期和时间数据类型。
标签: sql sql-server converters
最简单的方法是:
select convert(date, performance_month + '01')
日期的标准字符串表示是 YYYYMMDD。
对于过去五个月的数据,您可以简单地使用:
performance_month >= format(dateadd(month, -5, getdate()), 'yyyyMM')
也就是说,不要将字符串转换为日期。将日期转换为字符串——这有助于优化器,因为它可以“看到”performance_month 而无需函数调用云。
【讨论】: