2

我有一个由另一个程序创建的文本文件,该文件已导入 MS Access 2003。日期和时间字段分为 3 个单独的字段,我想创建 1 个日期/时间字段。以下是数据示例:

YEAR,DAY_NUMBER,TIME
2002,231,223405
2004,117,000000

YEAR:YYYY 格式的年份

DAY:一年中的某一天。例如,001 代表 1 月 1 日;034 是 2 月 3 日

TIME:HHMMSS 中的时间

如何创建具有相应日期/时间值的附加字段?提前致谢。

4

3 回答 3

2

此示例假定您的表名为MyTable,其YEARDAY_NUMBER字段均为数字数据类型,TIME字段为文本,并且您添加了名为 的日期/时间字段date_time

DateSerial()尝试使用和TimeSerial()函数进行更新查询。

UPDATE MyTable
SET date_time = DateSerial([YEAR],1,DAY_NUMBER)
    + TimeSerial(Left([TIME],2), Mid([TIME],3,2), Right([TIME],2));

编辑:如果我误解了您的意图,并且您实际上不需要或不想存储日期/时间值,您可以在需要时通过SELECT查询导出它。

SELECT
    DateSerial([YEAR],1,DAY_NUMBER)
        + TimeSerial(Left([TIME],2), Mid([TIME],3,2), Right([TIME],2))
        AS date_time
FROM MyTable;
于 2012-05-11T02:33:14.807 回答
1
' *********************************************************************
' FUNCTION: CJulian2Date()
'
' PURPOSE: Convert a Julian day to a date. The function works with
'          dates based on the Gregorian (modern) calendar.
'
' ARGUMENTS:
'    JulDay: The ordinal day of a year. Between 1 and 365 for all
'            years, or between 1 and 366 for leap years.
'
'    YYYY: A three or four digit integer for a year that is within the
'          range of valid Microsoft Access dates. If YYYY is omitted,
'          then YYYY is assumed to be the year of the current system
'          date.
'
' RETURNS: A date for a valid Microsoft Access year and Julian day,
'          or a Null value for an invalid Julian Day.
' *********************************************************************

Function CJulian2Date (JulDay As Integer, Optional YYYY)
    If IsMissing(YYYY) Then YYYY = Year(Date)
    If Not IsNumeric(YYYY) Or YYYY \ 1 <> YYYY Or YYYY < 100 Or YYYY _
      > 9999 Then Exit Function
    If JulDay > 0 And JulDay < 366 Or JulDay = 366 And _
      YYYY Mod 4 = 0 And YYYY Mod 100 <> 0 Or YYYY Mod 400 = 0 Then _
        CJulian2Date = Format(DateSerial(YYYY, 1, JulDay), "m/d/yyyy")
End Function

来源: http: //support.microsoft.com/kb/209922

于 2012-05-11T01:11:15.510 回答
0

取年并转换为当年的 1 月 1 日。添加天数并转换为日期格式。你可以把它放在一个查询中。

CalcDate: CDate(CLng(CDate("01/01/" & [Year]))+[day]-1)

于 2012-05-11T01:26:49.490 回答