diff --git a/pkg/frontend/mysql_cmd_executor.go b/pkg/frontend/mysql_cmd_executor.go
index 87548a9fd5b3b6be60b45a0244a3c854c27dc0f9..e12c3f5517cd15b17634824ecc4fdc83a803d4b0 100644
--- a/pkg/frontend/mysql_cmd_executor.go
+++ b/pkg/frontend/mysql_cmd_executor.go
@@ -306,14 +306,14 @@ const (
 	tableNamePos    = 1
 	tableCommentPos = 6
 
-	attrNamePos    = 16
-	attrTypPos     = 17
-	charWidthPos   = 19
-	nullablePos    = 20
-	primaryKeyPos  = 24
-	attrCommentPos = 27
-
-	showCreateTableAttrCount = 29
+	attrNamePos    = 17
+	attrTypPos     = 18
+	charWidthPos   = 20
+	nullablePos    = 21
+	primaryKeyPos  = 25
+	attrCommentPos = 28
+
+	showCreateTableAttrCount = 30
 )
 
 /*
diff --git a/pkg/vm/engine/tae/catalog/database.go b/pkg/vm/engine/tae/catalog/database.go
index f3c51fcd4465b3380a69b56976bb57e2c712281a..315a49518f12a3a7c3ac95f98e7cb81c408852aa 100644
--- a/pkg/vm/engine/tae/catalog/database.go
+++ b/pkg/vm/engine/tae/catalog/database.go
@@ -29,6 +29,7 @@ import (
 
 type accessInfo struct {
 	TenantID, UserID, RoleID uint32
+	CreateAt                 types.Timestamp
 }
 
 func (ai *accessInfo) WriteTo(w io.Writer) (n int64, err error) {
@@ -37,7 +38,10 @@ func (ai *accessInfo) WriteTo(w io.Writer) (n int64, err error) {
 			return
 		}
 	}
-	return 12, nil
+	if err = binary.Write(w, binary.BigEndian, int64(ai.CreateAt)); err != nil {
+		return
+	}
+	return 20, nil
 }
 
 func (ai *accessInfo) ReadFrom(r io.Reader) (n int64, err error) {
@@ -46,7 +50,12 @@ func (ai *accessInfo) ReadFrom(r io.Reader) (n int64, err error) {
 			return
 		}
 	}
-	return 12, nil
+	at := int64(0)
+	if err = binary.Read(r, binary.BigEndian, &at); err != nil {
+		return
+	}
+	ai.CreateAt = types.Timestamp(at)
+	return 20, nil
 }
 
 type DBEntry struct {
@@ -87,6 +96,7 @@ func NewDBEntry(catalog *Catalog, name string, txnCtx txnif.AsyncTxn) *DBEntry {
 		e.acInfo.TenantID = txnCtx.GetTenantID()
 		e.acInfo.UserID, e.acInfo.RoleID = txnCtx.GetUserAndRoleID()
 	}
+	e.acInfo.CreateAt = types.CurrentTimestamp()
 	return e
 }
 
@@ -134,10 +144,11 @@ func (e *DBEntry) Compare(o common.NodePayload) int {
 	return e.DoCompre(oe)
 }
 
-func (e *DBEntry) GetTenantID() uint32 { return e.acInfo.TenantID }
-func (e *DBEntry) GetUserID() uint32   { return e.acInfo.UserID }
-func (e *DBEntry) GetRoleID() uint32   { return e.acInfo.RoleID }
-func (e *DBEntry) GetName() string     { return e.name }
+func (e *DBEntry) GetTenantID() uint32          { return e.acInfo.TenantID }
+func (e *DBEntry) GetUserID() uint32            { return e.acInfo.UserID }
+func (e *DBEntry) GetRoleID() uint32            { return e.acInfo.RoleID }
+func (e *DBEntry) GetCreateAt() types.Timestamp { return e.acInfo.CreateAt }
+func (e *DBEntry) GetName() string              { return e.name }
 func (e *DBEntry) GetFullName() string {
 	if len(e.fullName) == 0 {
 		e.fullName = genDBFullName(e.acInfo.TenantID, e.name)
diff --git a/pkg/vm/engine/tae/catalog/model.go b/pkg/vm/engine/tae/catalog/model.go
index b7e1edf34f753b266cfa2aee5727c5a05fc676fd..763ae64f9c17eb7d13a0f2564b0c9d6bf7e0e7b4 100644
--- a/pkg/vm/engine/tae/catalog/model.go
+++ b/pkg/vm/engine/tae/catalog/model.go
@@ -75,6 +75,7 @@ const (
 	SystemDBAttr_CreateSQL   = "dat_createsql"
 	SystemDBAttr_Owner       = "owner"
 	SystemDBAttr_Creator     = "creator"
+	SystemDBAttr_CreateAt    = "created_time"
 	SystemDBAttr_AccID       = "account_id"
 
 	SystemRelAttr_ID          = "rel_id"
@@ -87,6 +88,7 @@ const (
 	SystemRelAttr_CreateSQL   = "rel_createsql"
 	SystemRelAttr_Owner       = "owner"
 	SystemRelAttr_Creator     = "creator"
+	SystemRelAttr_CreateAt    = "created_time"
 	SystemRelAttr_AccID       = "account_id"
 
 	SystemColAttr_AccID           = "account_id"
@@ -141,6 +143,10 @@ func init() {
 		Oid:  types.T_uint64,
 		Size: 8,
 	}
+	ttimestamp := types.Type{
+		Oid:  types.T_timestamp,
+		Size: 8,
+	}
 
 	/*
 
@@ -182,6 +188,9 @@ func init() {
 	if err = SystemDBSchema.AppendCol(SystemDBAttr_Creator, tu32); err != nil {
 		panic(err)
 	}
+	if err = SystemDBSchema.AppendCol(SystemDBAttr_CreateAt, ttimestamp); err != nil {
+		panic(err)
+	}
 	if err = SystemDBSchema.AppendCol(SystemDBAttr_AccID, tu32); err != nil {
 		panic(err)
 	}
@@ -257,6 +266,9 @@ func init() {
 	if err = SystemTableSchema.AppendCol(SystemRelAttr_Creator, tu32); err != nil {
 		panic(err)
 	}
+	if err = SystemTableSchema.AppendCol(SystemRelAttr_CreateAt, ttimestamp); err != nil {
+		panic(err)
+	}
 	if err = SystemTableSchema.AppendCol(SystemRelAttr_AccID, tu32); err != nil {
 		panic(err)
 	}
diff --git a/pkg/vm/engine/tae/catalog/table.go b/pkg/vm/engine/tae/catalog/table.go
index 8e310fcbd02c97bb17d41191d3a62e00c86caecc..27c7f64f5bada48b7c45ec4cb6f3d12a6a17b7e9 100644
--- a/pkg/vm/engine/tae/catalog/table.go
+++ b/pkg/vm/engine/tae/catalog/table.go
@@ -46,8 +46,8 @@ func NewTableEntry(db *DBEntry, schema *Schema, txnCtx txnif.AsyncTxn, dataFacto
 		// Only in unit test, txnCtx can be nil
 		schema.AcInfo.TenantID = txnCtx.GetTenantID()
 		schema.AcInfo.UserID, schema.AcInfo.RoleID = txnCtx.GetUserAndRoleID()
-
 	}
+	schema.AcInfo.CreateAt = types.CurrentTimestamp()
 	e := &TableEntry{
 		BaseEntry: &BaseEntry{
 			CommitInfo: CommitInfo{
diff --git a/pkg/vm/engine/tae/db/db_test.go b/pkg/vm/engine/tae/db/db_test.go
index b62948ae6f176ae7db1520106dddc50c61386cce..03148398b189f5d3f2f2088e5dd01b28e6ed3e56 100644
--- a/pkg/vm/engine/tae/db/db_test.go
+++ b/pkg/vm/engine/tae/db/db_test.go
@@ -2884,8 +2884,8 @@ func TestMultiTenantMoCatalogOps(t *testing.T) {
 		// [mo_database, mo_tables, mo_columns, 'mo_users_t2' 'test-table-a-timestamp']
 		checkAllColRowsByScan(t, sysTblTbl, 5, true)
 		sysColTbl, _ := sysDB.GetRelationByName(catalog.SystemTable_Columns_Name)
-		// [mo_database(7), mo_tables(11), mo_columns(18), 'mo_users_t2'(1+1), 'test-table-a-timestamp'(2+1)]
-		checkAllColRowsByScan(t, sysColTbl, 41, true)
+		// [mo_database(8), mo_tables(12), mo_columns(18), 'mo_users_t2'(1+1), 'test-table-a-timestamp'(2+1)]
+		checkAllColRowsByScan(t, sysColTbl, 43, true)
 	}
 	{
 		// account 1
@@ -2905,8 +2905,8 @@ func TestMultiTenantMoCatalogOps(t *testing.T) {
 		// [mo_database, mo_tables, mo_columns, 'mo_users_t1' 'test-table-a-timestamp']
 		checkAllColRowsByScan(t, sysTblTbl, 5, true)
 		sysColTbl, _ := sysDB.GetRelationByName(catalog.SystemTable_Columns_Name)
-		// [mo_database(7), mo_tables(11), mo_columns(18), 'mo_users_t1'(1+1), 'test-table-a-timestamp'(3+1)]
-		checkAllColRowsByScan(t, sysColTbl, 42, true)
+		// [mo_database(8), mo_tables(12), mo_columns(18), 'mo_users_t1'(1+1), 'test-table-a-timestamp'(3+1)]
+		checkAllColRowsByScan(t, sysColTbl, 44, true)
 	}
 	{
 		// sys account
@@ -2923,8 +2923,8 @@ func TestMultiTenantMoCatalogOps(t *testing.T) {
 		// [mo_database, mo_tables, mo_columns, 'mo_accounts']
 		checkAllColRowsByScan(t, sysTblTbl, 4, true)
 		sysColTbl, _ := sysDB.GetRelationByName(catalog.SystemTable_Columns_Name)
-		// [mo_database(7), mo_tables(11), mo_columns(18), 'mo_accounts'(1+1)]
-		checkAllColRowsByScan(t, sysColTbl, 38, true)
+		// [mo_database(8), mo_tables(12), mo_columns(18), 'mo_accounts'(1+1)]
+		checkAllColRowsByScan(t, sysColTbl, 40, true)
 	}
 
 }
diff --git a/pkg/vm/engine/tae/txn/txnimpl/sysblock.go b/pkg/vm/engine/tae/txn/txnimpl/sysblock.go
index ba1a8a6c4ecf24eeb8bedb63bf84e28b72082273..b44773372e3516258e33d9f3ae9cd43d367ed5e3 100644
--- a/pkg/vm/engine/tae/txn/txnimpl/sysblock.go
+++ b/pkg/vm/engine/tae/txn/txnimpl/sysblock.go
@@ -269,6 +269,8 @@ func (blk *txnSysBlock) getRelTableData(colIdx int) (view *model.ColumnView, err
 			colData.Append(schema.AcInfo.RoleID)
 		case catalog.SystemRelAttr_Creator:
 			colData.Append(schema.AcInfo.UserID)
+		case catalog.SystemRelAttr_CreateAt:
+			colData.Append(schema.AcInfo.CreateAt)
 		case catalog.SystemRelAttr_AccID:
 			colData.Append(schema.AcInfo.TenantID)
 		default:
@@ -304,6 +306,8 @@ func (blk *txnSysBlock) getDBTableData(colIdx int) (view *model.ColumnView, err
 			colData.Append(db.GetRoleID())
 		case catalog.SystemDBAttr_Creator:
 			colData.Append(db.GetUserID())
+		case catalog.SystemDBAttr_CreateAt:
+			colData.Append(db.GetCreateAt())
 		case catalog.SystemDBAttr_AccID:
 			colData.Append(db.GetTenantID())
 		default: