将字符串转换为smalldatetime

时间:2011-03-14 16:05:15

标签: c# .net vb.net

我的字符串排列方式符合格式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会让月份和日期混淆。

感谢您的想法

3 个答案:

答案 0 :(得分:9)

不要使用字符串开始将数据发送到SQL Server。而是使用参数化的SQL语句,并在指定DateTime后让驱动程序为您完成工作。 (有关示例,请参阅SqlCommand.Parameters文档。)

这就是你应该处理几乎所有所有值的方法 - 尤其是用户输入的值。除了不必担心格式化之外,这还可以防止SQL注入攻击。

因此,只需将输入字符串解析为DateTime,最好使用DateTime.ParseExactDateTime.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)。