在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
。
请问有人知道怎么做吗?
【问题讨论】:
看看CONVERT
、REPLACE
和连接运算符 (+
)。
【参考方案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 感谢您的提示。是的,你是对的 - char
和 varchar
也可以。抱歉,我没有想到这一点 - 我们只是在几个查询中使用了 nvarchar
方式,我只记得它以上是关于在sql server中将数据和时间转换为数字的主要内容,如果未能解决你的问题,请参考以下文章
在 SQL Server 数据库中将长日期时间转换为实际日期时间的最佳方法是啥?
如何在 SQL Server 中将 varchar 数据转换为时间