[英]How to treat a string as a month in SQL Server
在我的数据库中,我有一个表,其中的一列以字符串格式存储joining_months
,例如一月,二月,三月...(依此类推)。
现在,我想在此表上运行SQL查询,以仅获取连接月份在用户指定月份之前或之后的行。
就像是:
select * from table1 where joining_month >or< 'March'
如何比较像这样的字符串格式存储的月份?
请帮忙 !
您应该在表的另一列上具有与名称关联的月份的数值,例如,“ 1月”为1,“ 2月”为2,等等。
然后,您可以在对数字值进行比较的同时简单地过滤字符串的名称。
请注意,仅当月份的日期与同一年相同时,才可以进行类似的直接比较。 如果它们在不同的年份,那么比较月份是没有意义的,除非您将年份考虑在内。
我在此页面上发现了这种开箱即用的方式:
另一种方法是:SELECT CHARINDEX(monthname,'XXJANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC')/ 3 AS monthNumber
您可以先从表中提取该月的前3个字符,然后将其与硬编码字符串“ XXJANFEBMARAPRMAYAYUNJULAUGSEPOCTNOVDEC”进行比较,以进行修改。 那应该做。
所以您的查询可以是这样的:
select CHARINDEX(substing(joining_month,1,3),'XXJANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC')/3
AS monthnumber, *
from table1
where monthnumber >or< 3
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.