|
Archives of the TeradataForumMessage Posted: Wed, 08 Dec 2004 @ 10:00:57 GMT
Mike Vanole wrote: ((100 * ((4 * nullifzero(DBASE.PasswordChgDate) - 1) / 146097) + (4 * (((4 * DBASE.PasswordChgDate - 1) MOD 146097) / 4) + 3) / 1461 - 1900) + ((5 * (((4 * (((4 * DBASE.PasswordChgDate - 1) MOD 146097) / 4) + 3) MOD 1461 + 4) / 4) - 3) / 153 + 2) / 12) * 10000 + (((5 * (((4 * (((4 * DBASE.PasswordChgDate - 1) MOD 146097) / 4) + 3) MOD 1461 + 4) / 4) - 3) / 153 + 2) MOD 12 + 1) * 100 + ((5 * (((4 * (((4 * DBASE.PasswordChgDate - 1) MOD 146097) / 4) + 3) MOD 1461 + 4) / 4) - 3) MOD 153 +5) / 5 (date, format 'yy/mm/dd', NAMED PasswordLastModDate), I've seen that before, it's copied from dbc.users and similar to sys_calendar.calbasics.day_of_calendar. Nobody ever dares to find out how it's working :-) But maybe an old Teradata developer can explain: Is there any real reason why a modified version of the julian period day number is calculated instead of a simple "date_col - staring_date"? date '0001-01-01' + (DBASE.PasswordChgDate - 307) And why that strange calculation for PasswordLastModTime? ((SUBSTR(CHAR2HEXINT(dbase.PasswordString),42,1)|| SUBSTR(CHAR2HEXINT(dbase.PasswordString),44,1))*10000 + (SUBSTR(CHAR2HEXINT(dbase.PasswordString),48,1)|| SUBSTR(CHAR2HEXINT(dbase.PasswordString),50,1))*100 + (SUBSTR(CHAR2HEXINT(dbase.PasswordString),54,1)|| SUBSTR(CHAR2HEXINT(dbase.PasswordString),56,1))) (Integer, FORMAT '99:99:99', Named PasswordLastModTime), It is already a string: substring(dbase.PasswordString from 21 for 8) (integer, format '99:99:99') Dieter
| ||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||
Copyright 2016 - All Rights Reserved | ||||||||||||||||||||||||||||||||||||||||||||||||
Last Modified: 15 Jun 2023 | ||||||||||||||||||||||||||||||||||||||||||||||||