我有一个由另一个程序创建的文本文件,该文件已导入 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 中的时间
如何创建具有相应日期/时间值的附加字段?提前致谢。
此示例假定您的表名为MyTable
,其YEAR
和DAY_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;
' *********************************************************************
' 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
取年并转换为当年的 1 月 1 日。添加天数并转换为日期格式。你可以把它放在一个查询中。
CalcDate: CDate(CLng(CDate("01/01/" & [Year]))+[day]-1)