繁体   English   中英

如何在SQL Server中将字符串视为月份

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM