C# 生成日期维度值
2023-09-27 14:27:40 时间
1. 时间维度表结构
/*==============================================================*/ /* Table: dim_date_day 日期维度_天 */ /*==============================================================*/ DROP TABLE IF EXISTS dw_realestate_sales.dim_date_day; CREATE TABLE dw_realestate_sales.dim_date_day ( date_key INT NOT NULL DEFAULT '1' COMMENT '维度主键', alternate_key DATE NOT NULL DEFAULT '1900-01-01' COMMENT '自然日日期值', day_number_of_week TINYINT DEFAULT '1' COMMENT '星期中的第几天', day_name_of_week VARCHAR(20) DEFAULT '' COMMENT '星期中名称', day_number_of_month TINYINT DEFAULT '1' COMMENT '月份中的天序号,从1开始', day_number_of_year INT DEFAULT '1' COMMENT '一年中的天数序号,从1开始', week_number_of_year TINYINT DEFAULT '1' COMMENT '年中的星期序号,从1开始', month_name VARCHAR(20) DEFAULT '' COMMENT '月份名称', month_number_of_year TINYINT DEFAULT '1' COMMENT '月份序号,从1开始', quarter_of_year TINYINT DEFAULT '1' COMMENT '季度序号', year_number INT DEFAULT '1' COMMENT '公历年数字' ) UNIQUE KEY(date_key) DISTRIBUTED BY HASH(date_key) BUCKETS 2 properties ( "replication_num"="3" );
2. C#生成预置数据代码
private static void generate_dim_date_data() { DateTime startDate = new DateTime(2000, 1, 1); DateTime endDate = new DateTime(2100, 1, 1); StringBuilder sb = new StringBuilder(); GregorianCalendar gc = new GregorianCalendar(); //int weekOfYear = gc.GetWeekOfYear(dt, CalendarWeekRule.FirstDay, DayOfWeek.Monday); //return weekOfYear; int linecount = 0; while (startDate < endDate) { // like 20050701,2005-07-01,6,Friday,1,182,27,July,7,3,2005 sb.Append(string.Format("{0}{1:D2}{2:D2}", startDate.Year, startDate.Month, startDate.Day)).Append(','). Append(startDate.ToString("yyyy-MM-dd")).Append(','). Append((int)startDate.DayOfWeek+1).Append(','). Append(GetWeekDayName(startDate.DayOfWeek)).Append(','). Append(startDate.Day).Append(','). Append(startDate.DayOfYear).Append(','). Append(gc.GetWeekOfYear(startDate, CalendarWeekRule.FirstDay, DayOfWeek.Monday)).Append(','). Append(GetMonthName(startDate.Month)).Append(','). Append(startDate.Month).Append(','). Append((startDate.Month - 1) / 3 + 1).Append(','). Append(startDate.Year).AppendLine(); linecount+=1; startDate = startDate.AddDays(1); //if (linecount == 100) //{ // Write(sb); //} } Write(sb); } public static void Write(StringBuilder sb) { FileStream fs = new FileStream("c:\\tmp\\dim_date.txt", FileMode.OpenOrCreate); //获得字节数组 byte[] data = System.Text.Encoding.UTF8.GetBytes(sb.ToString()); //开始写入 fs.Write(data, 0, data.Length); //清空缓冲区、关闭流 fs.Flush(); fs.Close(); sb.Clear(); } private static string GetWeekDayName(DayOfWeek dayofWeek) { string[] Day = new string[] { "星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日" }; string week = Day[Convert.ToInt32(dayofWeek.ToString("d"))].ToString(); return week; } private static string GetMonthName(int monthNumber) { string[] monthNames = new string[] { "一月份", "二月份", "三月份", "四月份", "五月份", "六月份", "七月份", "八月份", "九月份", "十月份", "十一月份", "十二月份" }; return monthNames[monthNumber - 1]; }
3. 结果预览
相关文章
- C# Object对象的ToString方法在转换日期时丢失毫秒
- c#课程设计---猜猜看游戏
- 精通C#(第6版)
- Why are C# structs immutable?
- C#日期时间类型格式化大全集 C#DateTime 类型格式化大全集
- C# (江湖小新)- Attribute(信息的传递者)
- C#学习记录——Visual Studio为项目添加DLL文件引用
- C#【基础篇】 C# 常量
- C#,入门教程(31)——预处理指令的基础知识与使用方法
- Java与C#间json日期格式互转完美解决方案
- C#日期格式大全
- 《敏捷软件开发:原则、模式与实践(C#版.修订版)》—第2章2.1节极限编程实践
- 基于C#+SqlLite实现(WinForm)邮件收发管理系统【100010495】
- c# 日期和时间System.DateTime
- c# 定制处理未处理异常
- C#结合正则表达式判断各种用户输入合法性
- C#格式化字符串中时间格式处理 JsonConvert.SerializeObject()日期格式问题
- Unity 之 Lua模拟C#等一个协程执行
- C#日期转换(转载)
- C# 测试代码#if DEBUG使用
- 为C#自定义控件添加自定义事件
- C# 读取Excel 单元格是日期格式