如何将字符串日期格式转换为日期时间日期格式?

时间:2013-08-25 19:46:34

标签: asp.net sql-server vb.net

我们的用户使用以下格式存储日期值:

Mon. DD, YYYY 

示例:

Sept. 23, 2013

注意周一之后的时期。

我们想将此格式转换为:

MM/dd/yyyy 

示例:

9/23/2013

我试过这个:

SELECT CONVERT(VARCHAR(10), TrainingDates, 101) AS TrainingDates
FROM tblTrainingDates

但我得到Sept. 23

正如你所看到的,我不仅没有得到我想要的格式,年份部分甚至没有渲染

有任何想法如何解决这个问题?

提前谢谢。

2 个答案:

答案 0 :(得分:2)

这应该这样做:

SELECT CONVERT(DATETIME, REPLACE('Sept. 23, 2013','.',''), 107)

这会删除字符串中的点并转换为日期时间格式107.

然后返回你想要的字符串(MM / DD / YYYY)

SELECT CONVERT(VARCHAR(10), CONVERT(DATETIME, REPLACE('Sept. 23, 2013','.',''), 107), 101)

有关其他格式类型,请参阅:http://www.sqlusa.com/bestpractices/datetimeconversion/http://www.sql-server-helper.com/tips/date-formats.aspx

修改
事实证明它适用于我,因为斯洛文尼亚语的地方(9月)。这个应该在英语语言环境中工作:

SELECT CONVERT(VARCHAR(10), CONVERT(DATETIME, SUBSTRING('Sept. 23, 2013', 0, 4) + ' ' + SUBSTRING('Sept. 23, 2013',6,9), 107), 101)

As a function.

答案 1 :(得分:0)

可以在更新数据库之前完成日期解码

Dim inp As String = "Sept. 23, 2013"
Dim fi As Globalization.DateTimeFormatInfo
fi = New System.Globalization.DateTimeFormatInfo
fi.LongDatePattern = "MMM. dd, yyyy"
fi.AbbreviatedMonthNames = {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", ""}
Dim d As Date = DateTime.ParseExact(inp, "D", fi)
Dim result as String =  d.ToString("MM\/dd\/yyyy")

关键是使用DateTimeFormatInfo Class,它允许完全自定义格式。请注意AbbreviatedMonthNames 9月取代 9月

当输入字符串的格式不正确时,可以使用ParseExact代替TryParseExact来避免异常。