access 时间格式化输出 format([表名].时间字段,'yyyy-mm-dd') as 别名

博客介绍了在Access中对时间字段进行格式化的操作,使用format函数将表中的时间字段按照'yyyy-mm-dd'格式输出,并赋予别名。

format([表名].时间字段,'yyyy-mm-dd') as 别名

internal static int BulkMerge(string tableName, DataTable srcDt, string[] onColumns) { if (srcDt == null || srcDt.Rows.Count == 0) return 0; // 没有数据,无效操作 List<string> mergeSqlList = new List<string>(); // 构建列部分 StringBuilder columnsBuilder = new StringBuilder(); foreach (DataColumn column in srcDt.Columns) { if (columnsBuilder.Length > 0) columnsBuilder.Append(", "); columnsBuilder.AppendFormat("{0}", column.ColumnName); } string columns = columnsBuilder.ToString(); // 构建 ON 条件 StringBuilder onConditionBuilder = new StringBuilder(); foreach (string col in onColumns) { if (onConditionBuilder.Length > 0) onConditionBuilder.Append(" AND "); onConditionBuilder.AppendFormat("target.{0} = source.{0}", col); } string onCondition = onConditionBuilder.ToString(); // 构建更新字段 List<string> updateFields = new List<string>(); foreach (DataColumn column in srcDt.Columns) { if (Array.IndexOf(onColumns, column.ColumnName) < 0) { updateFields.Add(String.Format("target.{0} = source.{0}", column.ColumnName)); } } string updateSet = String.Join(", ", updateFields.ToArray()); // 遍历每一行生成 MERGE INTO 语句 foreach (DataRow row in srcDt.Rows) { StringBuilder valuesBuilder = new StringBuilder(); foreach (DataColumn column in srcDt.Columns) { if (row.IsNull(column)) { valuesBuilder.Append("NULL"); } else { object value = row[column]; if (column.DataType == typeof(string)) { value = ((string)value).Replace("'", "''"); valuesBuilder.AppendFormat("'{0}'", value); } else if (column.DataType == typeof(DateTime)) { // 如果是 DateTime 类型,转换为 Oracle 的日期格式 valuesBuilder.AppendFormat("TO_DATE('{0}', 'YYYY-MM-DD HH24:MI:SS')", ((DateTime)value).ToString("yyyy-MM-dd HH:mm:ss")); } else if (column.DataType == typeof(decimal) || column.DataType == typeof(float) || column.DataType == typeof(double)) { valuesBuilder.AppendFormat("{0}", value.ToString().Replace(',', '.')); } else { valuesBuilder.Append(value); } } if (valuesBuilder.Length > 0 && valuesBuilder[valuesBuilder.Length - 1] != '(') valuesBuilder.Append(", "); } string values = valuesBuilder.ToString().TrimEnd(',', ' '); // 构造 SELECT 子句,为每个值指定列别名 string[] valueArray = values.Split(','); StringBuilder selectBuilder = new StringBuilder(); for (int i = 0; i < srcDt.Columns.Count; i++) { if (i > 0) selectBuilder.Append(", "); string val = valueArray[i].Trim(); string colName = srcDt.Columns[i].ColumnName; selectBuilder.AppendFormat("{0} AS {1}", val, colName); } string selectClause = selectBuilder.ToString(); // 构造 MERGE INTO SQL string mergeSql = String.Format(@" MERGE INTO {0} target USING ( SELECT {1} FROM dual ) source ON ({2}) WHEN MATCHED THEN UPDATE SET {3} WHEN NOT MATCHED THEN INSERT ({4}) VALUES (source.{5})", tableName, selectClause, onCondition, updateSet, columns, String.Join(", source.", columns.Split(new[] { ',' }, StringSplitOptions.None).Select(c => c.Trim()).ToArray()) ); mergeSqlList.Add(mergeSql); } // 批量执行 int[] results = Ws.ExecuteBatchSQL(Db, mergeSqlList.ToArray()); // 统计结果 int successCount = 0; int errorCount = 0; foreach (var result in results) { if (result > 0) successCount++; else if (result < 0) errorCount++; } if (errorCount > 0) return -1; // 存在错误 if (successCount == 0) return 0; // 没有成功执行的 SQL return 1; // 成功 } 这个执行效率如何
08-14
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值