我的字符串排列方式符合格式yyyy-dd-MM HH:mm:ss
它可能看起来像2010-20-12 13:30:00
我需要将它插入SQL Server中的smalldatetime列。列的格式是 yyyy-MM-dd HH:mm:ss
我需要字符串看起来像2010-12-20 13:30:00
,否则SQL Server会让月份和日期混淆。
感谢您的想法
答案 0 :(得分:9)
不要使用字符串开始将数据发送到SQL Server。而是使用参数化的SQL语句,并在指定DateTime
后让驱动程序为您完成工作。 (有关示例,请参阅SqlCommand.Parameters文档。)
这就是你应该处理几乎所有所有值的方法 - 尤其是用户输入的值。除了不必担心格式化之外,这还可以防止SQL注入攻击。
因此,只需将输入字符串解析为DateTime
,最好使用DateTime.ParseExact
或DateTime.TryParseExact
,具体取决于您是否希望解析失败的结果是一个例外与否。
答案 1 :(得分:2)
//First convert string to DateTime
DateTime dt;
dt = Convert.ToDateTime("2010-20-12 13:30:00");
//Second Convert DateTime to formatted string
string t_time;
t_time = dt.ToString("yyyy-dd-MM hh:mm tt");
HTH。
答案 2 :(得分:1)
您不需要转换为字符串。使用参数化的sql查询或存储过程,只提供datetime对象作为参数。 sql命令可以很好地处理插入。
如果您只有字符串,可以使用DateTime.Parse和DateTimeFormatInfo将其转换为日期时间(有关创建格式信息的帮助,请参阅this documentation)。