warren50 said:
I'm importing a table from a MYSQL database that contains a UNIX time stamp
data field. I need a function or a formula I can use in a query to convert
the UNIX time to the Access general date format.
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
The following is a function I use to convert Unix to Access dates:
Function convUnixDate(dblUnixDate As Double) As Date
' Purpose:
' Convert the Unix date (seconds) to date/time data type
' In:
' dblUnixDate Seconds since Jan 1, 1970 00:00:00
' Use a Double data type 'cuz it's range is:
' 4.94065645841247 E–324 to
' 1.79769313486231 E308
' Don't use any decimal places.
' Out:
' Date/Time
' Created:
' mgf 23oct2004 Converted from web site:
'
http://www.experts-exchange.com/
' Databases/Microsoft_SQL_Server/
' Q_20655264.html
' Comment from rdmjrb, Date: 06/24/2003 07:58AM PDT
'
' ALTER FUNCTION convUnixDate (@unixDate BIGINT)
' RETURNS VARCHAR(24)
' AS
' Begin
' DECLARE @tmpDate datetime,
' @DELIMITER integer
' SET @DELIMITER = 2000000000 -- 2,000,000,000
' SET @tmpDate='1970-01-01 00:00'
' WHILE @unixDate > @DELIMITER
' Begin
' SET @tmpDate=DATEADD(SECOND, @DELIMITER, @tmpDate)
' SET @unixDate=@unixDate-@DELIMITER
' End
' SET @tmpDate=DATEADD(SECOND, @unixDate, @tmpDate)
'
' RETURN CONVERT(CHAR(11), @tmpDATE, 101) +
' SUBSTRING(CONVERT(CHAR(20), @tmpDATE, 100), 13, 7)
' END --FUNCTION
'
' Modified:
' mgf 23oct2004 Converted to VBA
Const lngLimit As Long = 2000000000
Dim dteTemp As Date
dteTemp = CDate("1970-01-01 00:00:00") ' Unix start time
Do While dblUnixDate > lngLimit
dteTemp = DateAdd("s", lngLimit, dteTemp)
dblUnixDate = dblUnixDate - lngLimit
Loop
convUnixDate = DateAdd("s", dblUnixDate, dteTemp)
End Function
--
MGFoster:::mgf00 <at> earthlink <decimal-point> net
Oakland, CA (USA)
-----BEGIN PGP SIGNATURE-----
Version: PGP for Personal Privacy 5.0
Charset: noconv
iQA/AwUBQwzl1IechKqOuFEgEQKg8QCfes55Qe3DV+/Daq5Bla4VA92YKaoAoIe2
rSBeC0UlDnjeVQC9kqEiHWrG
=gCkY
-----END PGP SIGNATURE-----