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

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

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

请问有人知道怎么做吗?

【问题讨论】:

  • 看看CONVERTREPLACE 和连接运算符 (+)。

标签: sql sql-server datetime long-integer converters


【解决方案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 方式,我只记得它
猜你喜欢
  • 2022-01-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多