在sql server中将数据和时间转换为数字

Posted

技术标签:

【中文标题】在sql server中将数据和时间转换为数字【英文标题】:Convert data and time into a numeric number in sql server 【发布时间】:2021-05-08 15:59:12 【问题描述】:

我有一个数据和时间格式列,我想在 Microsoft SQL Server 中将其转换为以下格式:yyyymmddhhmmss00000

例如,如果我有2021-02-04 11:49:50,它将被转换为2021020411495000000

请问有人知道怎么做吗?

【问题讨论】:

看看CONVERTREPLACE 和连接运算符 (+)。 【参考方案1】:

你可以使用FORMAT函数:

SELECT FORMAT(myDate, 'yyyyMMddHHmmss00000')

【讨论】:

谢谢你,但你在使用时必须小心,因为它不区分上午和下午 抱歉需要大写 HH 已更正【参考方案2】:

通过将日期转换为 NVARCHAR 一次,格式为 112,一次转换为格式 8,您可以提取数字日期和时间,无需毫秒。删除 : 之后,您可以连接这两个字符串并将它们转换为 bigint。举个例子:

DECLARE @d DATETIME = GETDATE()
SELECT CAST(CONVERT(NVARCHAR(8), @d, 112) + REPLACE(CONVERT(NVARCHAR(8), @d, 8), ':', '') + '00000' AS BIGINT)

【讨论】:

“需要”成为nvarchar 吗?由于该值仅由数字字符组成,为什么不使用varchar(大小的一半),甚至更好(因为它是固定宽度)char @Larnu 感谢您的提示。是的,你是对的 - charvarchar 也可以。抱歉,我没有想到这一点 - 我们只是在几个查询中使用了 nvarchar 方式,我只记得它

以上是关于在sql server中将数据和时间转换为数字的主要内容,如果未能解决你的问题,请参考以下文章

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

在 SQL Server 数据库中将长日期时间转换为实际日期时间的最佳方法是啥?

如何在 SQL 中将数字转换为日期时间

如何在 SQL Server 中将 varchar 数据转换为时间

在 SQL Server 2008 中将 NVARCHAR 转换为 INT 数据类型

如何在 SQL SERVER 中将内联 SQL 查询转换为 JOINS 以减少加载时间