SQL Server 将字符串转换为日期时间
Posted
技术标签:
【中文标题】SQL Server 将字符串转换为日期时间【英文标题】:SQL Server convert string to datetime 【发布时间】:2010-11-11 06:25:12 【问题描述】:这不是询问如何在 MSSQL 中将任意字符串转换为日期时间,例如 this question。
我可以控制字符串格式,但我想知道使用日期字符串更新日期时间字段的 MSSQL 语法是什么。
【问题讨论】:
【参考方案1】:例如你可以使用
update tablename set datetimefield='19980223 14:23:05'
update tablename set datetimefield='02/23/1998 14:23:05'
update tablename set datetimefield='1998-12-23 14:23:05'
update tablename set datetimefield='23 February 1998 14:23:05'
update tablename set datetimefield='1998-02-23T14:23:05'
您需要注意日/月顺序,因为如果没有首先指定年份,这将取决于语言。如果您先指定年份,则没有问题;日期顺序始终为年-月-日。
【讨论】:
-1。第一年不保证 y-m-d。 SET LANGUAGE 英国 GO SELECT CAST('2009-02-28' AS datetime), CAST('2009-02-28 01:02:03' AS datetime) -- 都失败 在 yyyy-mm-dd 工作之前,您必须使用“日期”和 SQL Server 2008。 请小心剪切和粘贴。 Tibor 专门引用了新的日期类型 only 用于可靠的 ymd 解析 gbn - 无论语言设置如何,示例语法都可以正常工作。您使用的语法不是答案的一部分。还提供了一个链接,其中包含阅读完整讨论的建议。 Quote: 最终结果是,只要年份首先出现,这些新类型对于单独的日期时间文字来说是语言中性的。如果是这种情况,则字符串将首先被解释为年,然后是月,最后是日 - 无论 DATEFORMAT 或语言设置如何。 gbn- 感谢您纠正我使用“MSSQL”而不是“SQL Server”。我现在知道以备将来使用。【参考方案2】:UPDATE MyTable SET MyDate = CONVERT(datetime, '2009/07/16 08:28:01', 120)
有关 CAST 和 CONVERT 的完整讨论,包括不同的日期格式选项,请参阅下面的 MSDN 库链接:
https://docs.microsoft.com/en-us/sql/t-sql/functions/cast-and-convert-transact-sql
【讨论】:
以上是关于SQL Server 将字符串转换为日期时间的主要内容,如果未能解决你的问题,请参考以下文章