2012-05-11 32 views
2

我有,我已經導入到MS Access 2003中 日期&時間字段被分成3個獨立的領域和其他程序創建一個文本文件我想創建1個日期/時間字段。下面是數據的一個例子:的MS Access:轉換獨立以來,DAY_COUNT和時間字段的日期/時間

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

年份:今年YYYY格式

DAY:一年的日子。例如001代表1月1日; 034將是二月

時間的3:如何創建一個附加字段與相應的日期/時間值HHMMSS

的時間? 在此先感謝。

回答

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; 
+0

好東西。 chr – Fionnuala

+0

+1我不知道你可以在當月使用1,然後在當天使用> 31。這是天才^ _^ –

+0

@MattDonnan在最近的另一個問題中,你和Brian Camire激勵我再看看'DateSerial()'。我很好奇,看看它做了一個虛假的日期...'DateSerial(2012,2,31)'...看起來像它的迴應可能是有用的。 :-) – HansUp

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

0

拿一年,並轉換爲當年的1月1日。添加天數並轉換爲日期格式。你可以把它放在查詢中。

CalcDate:CDATE(CLng函數(CDATE( 「01/01 /」 & [年]))+ [日] -1)

+1

我不明白,爲什麼你使用'CDATE()'兩次'CLng函數()'代替'CDATE( 「01/01 /」 &[年份])+ [DAY_NUMBER] -1' – HansUp

+0

@HansUp - 我一直在構建這些東西和測試,並且忘記了一個整數將被視爲日期,並且可以添加到日期中,並仍然在Access中獲取日期。 CLng()幫助瞭解我獲得的天數。 – JeffO

相關問題