说到十二生肖的来历,要从天干地支和二十八宿说起。早在六千年前,我国古代人民就通过对天象的观察而发现太阳和月亮一年要会合十二次,每次会合的位置不同,所以古人将太阳运行一圈的轨道分为十二等份,即十二宫,以“子丑寅卯”等代表一年的十二个月,周而复始,并以“甲乙丙丁”等与“子丑寅卯”等相配使用,用以纪年、纪日。这便是“天干地支”的由来。天干地支在古代被人们用在很多地方,人们用天干和地支的组合来计年,由于十天干和十二地支的最小公倍数是六十,所以天干地支计年每六十年一个轮回,称为六十花甲子。地支也被古人用来计方位,子为正北,卯为正东,午为正南,酉为正西。当二十八宿中的虚日鼠运行到正北即子位时,其他11个方位上的星宿分别为丑位上是牛金牛,寅位上是尾火虎,卯位上是房日兔,辰位上是亢金龙,巳位上是翼火蛇,午位上是星日马,未位上是鬼金羊,申位上是觜火猴,酉位上是卯日鸡,戌位上是娄金狗,亥位上是室火猪。这里先说一下二十八宿的命名方法,二十八宿名称都是由三个字组成的,第一个字为宿名,第二个字在每一相中的七宿分别冠以日月五行,最后一个字是象征动物。现在再回头看看虚日鼠运行到子位时十二地支方位上的十二宿的象征动物。我们会发现,他们正好是十二生肖中的十二个动物。再加上他们所处的地支方位,就有了我们常说的“子鼠丑牛寅虎卯兔辰龙巳蛇午马未羊申猴酉鸡戌狗亥猪”<十二生肖源于何时,今已难于细考。长期以来,不少人将《论衡》视为最早记载十二生肖的文献。《论衡》是东汉唯物主义思想家王充的名著。《论衡·物势》载:“寅,木也,其禽,虎也。戌,土也,其禽,犬也。午,马也。子,鼠也。酉,鸡也。卯,兔也。亥,豕也。未,羊也。丑,牛也。巳,蛇也。申,猴也。”以上引文,只有十一种生肖,所缺者为龙。该书《言毒篇》又说:“辰为龙,巳为蛇,辰、巳之位在东南。”这样,十二生肖便齐全了,十二地支与十二生肖的配属如此完整,且与现今相同。
生肖为何取数十二?《周礼·春官·冯相氏》载:“掌十有二岁,十有二月,十有二辰,十日,二十八星之位,辨其叙事,以会天位。”时间的分割以十二累进,一纪十二年,一年十二个月,一日十二时辰。《国语·晋语四》载:“黄帝之子二十五宗,其得姓者十四人,为十二姓。”甚至天子妻妾也有“十二女”之说,《后汉书·荀爽传》:“故天子娶十二妇,天之数也;诸侯以下各有等差,事之降也。”
近年,在神农架地区发现了汉族创世史诗《黑暗传》。其中有一个讲述干支来历的故事:“开天辟地之初,玄黄骑着混沌兽遨游,遇到女娲。女娲身边有两个肉包,大肉包里有十个男子,小肉包里有十二个女子。玄黄说:这是天干革命地支神,来治理乾坤的。于是,为他们分别取名,配夫妻,成阴阳。男的统称天干,女的则为地支。”这一创世神话故事,讲干支,讲玄黄神、女娲神,讲乾坤阴阳,将干支的“身世”推溯得十分久远。
十二生肖的产生,有着天文学的背景。在原始时代,先民们体验着寒暑交替的循环往复。宋代洪皓《松漠纪闻》载:“女真旧绝小,正朔所不及,其民皆不知纪年,问则曰“”我见青草几度矣,盖以草一青为一岁也。”宋代孟珙《蒙鞑备录》也记:“其俗每草青为一岁,有人问其岁,则曰几草矣。”后又有观天者发现月亮盈亏周期可以用来丈量岁的长短,发现十二次月圆为一岁,这一发现,是初期历法最精度的成果之一,“十二”便视为传达天意的“天之大数”。天干需地支为伴,日月相对,天地相对,就非“十二”莫属了。