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 将字符串转换为日期时间的主要内容,如果未能解决你的问题,请参考以下文章

sql server2000如何将数字转换为日期时间

如何将包含时区的字符串转换为日期时间 sql server

SQL Server 查询(查看)将字符串转换为日期时间

SQL Server 无法使用有效字符串将字符串转换为日期时间

如何在 SQL Server 中将字符串转换为日期时间?

如何将 SQL Server 的时间戳列转换为日期时间格式