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日です

時間:HHMMSSでの時間

対応する日付/時刻の値を使用して追加のフィールドを作成するにはどうすればよいですか?前もって感謝します。

4

3 に答える 3

2

この例では、テーブルの名前がMyTable、そのフィールドYEARDAY_NUMBERフィールドが両方とも数値データ型であり、TIMEフィールドがテキストであり、と呼ばれる日付/時刻フィールドを追加したことを前提としていますdate_time

DateSerial()and関数を使用して更新クエリを試してください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 に答える