在访问中转换月份到日期格式

时间:2015-10-27 10:37:54

标签: date ms-access

我有一个访问列,其值包括May,May-June,November,January-February等。

要求就是这样 1)如果只有一个月,我应该创建一个转换,其日期列指向该月的最后一个日期,年份将是当前年份。 例如,5月将是2015年5月30日,1月将是2015年1月31日 2)如果有两个月,则必须采用第二个月,并应实施与第1点相同的逻辑。 例如,5月至6月将是2015年6月31日,1月至2月将是2015年2月28日。

我的第一个偏好是不使用VBA代码。

请帮忙。

3 个答案:

答案 0 :(得分:1)

您可以在函数中使用单行代码:

Public Function GetDateFromMonth(ByVal Months As String) As Date

    Dim Ultimo As Date

    Ultimo = DateAdd("d", -1, DateAdd("m", 1 + UBound(Split(Months, "-")), CDate(Split(Months, "-")(0) & "/1")))        
    GetDateFromMonth = Ultimo

End Function

答案 1 :(得分:0)

将字符串拆分为" - ",使用第二个月,在该月添加一个以获得下个月,然后在该月的第一天从中减去一个月。例如Jan-Feb:build 3/1/2015然后减去1天以获得2月的最后一天

答案 2 :(得分:0)

制作一个包含月份列表的表格:

    MonthName   MonthNumber
January 1
February    2
March   3
April   4
May 5
June    6
July    7
August  8
September   9
October 10
November    11
December    12

创建此查询:

   SELECT InputData.Months, DateSerial(Year(Date()),[MonthNumber]+1,0) AS ReqdDate
FROM InputData, Months
WHERE (((IIf(InStr([Months],'-')=0,[Months],Mid([Months],InStr([Months],'-')+1)))=[MonthName]));

那就是它。输出如下:

    Months  ReqdDate
May 31/05/2015
May-June    30/06/2015
November    30/11/2015
January-February    28/02/2015
March   31/03/2015
April-September 30/09/2015

抱歉格式化 - 菜鸟。我在欧盟,所以我的日期对你来说很奇怪,但你明白了。你可以在我确定的时刻让他们成为美国约会对象。您可以在两秒内在代码中使用所需的位。

如果您不喜欢月份编号的查找表,我确定您可以使用某种格式功能将月份名称转换为月份编号。