You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#中如何生成a.m.格式时间字符串以解决NexusDB插入异常

解决NexusDB时间格式不匹配导致的字符串长度异常问题

我刚好碰到过类似的数据库格式适配问题,给你两个可行的解决方案:

方案一:生成a.m./p.m.格式的字符串

要得到带点的小写上午/下午标识,你需要指定英式英语文化(en-GB)作为格式提供器——因为默认的美式英语文化下,tt格式符输出的是无点的AM/PM,而英式文化会输出你需要的a.m./p.m.。

代码示例(记得先引用System.Globalization命名空间):

var ukCulture = new CultureInfo("en-GB");
// 带前导零的小时格式:比如 09:10 a.m.
string formattedTime = dte.ToString("hh:mm tt", ukCulture);

// 不带前导零的小时格式:比如 9:10 a.m.
// string formattedTime = dte.ToString("h:mm tt", ukCulture);

这样生成的字符串格式完全匹配数据库的要求,长度也会符合TIMESTART字段的限制,不会再触发"源字符串数据太宽"的异常。

方案二:更稳妥的参数化查询(推荐)

其实不建议把DateTime转成字符串插入数据库——不仅容易踩格式坑,还存在SQL注入风险。更好的方式是用参数化查询,直接传入DateTime类型的值,让数据库自己处理类型映射:

// 伪代码,根据你的NexusDB客户端调整具体写法
using(var cmd = new NexusDBCommand("INSERT INTO YourTableName (TIMESTART) VALUES (@TimeStart)", dbConnection))
{
    cmd.Parameters.AddWithValue("@TimeStart", dte);
    cmd.ExecuteNonQuery();
}

这种方式从根源上避免了格式匹配问题,同时更安全高效。

内容的提问来源于stack exchange,提问作者Venkat Kondapaneni

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 04:21:41