【问题标题】:Convert Bigint to Datetime SQL Server将 Bigint 转换为日期时间 SQL Server
【发布时间】:2019-10-03 01:46:29
【问题描述】:

我有一个包含字段 Report_Date 的表。该字段是 bigint 类型。我有另一个具有日期时间类型的 ReportDate 的表。我想合并每个表中的数据,但我希望将 bigint 转换为日期时间。

我尝试了SELECT DATEADD(DD, convert(bigint, Report_Date), Report_date),但收到错误消息:

将表达式转换为数据类型日期时间时出现算术溢出错误。

我也尝试过SELECT DATEADD(DD, convert(bigint, Report_Date), convert(datetime, Report_date)) 得到相同的错误消息结果。

我希望日期时间是2019-02-28 00:00:00.000

【问题讨论】:

  • 表中必须有一些不是有效日期时间值的数据。我们不知道您的 bigint“日期”是什么样的。向我们提供一些示例数据,帮助我们为您提供帮助。
  • 每一行都有一个 Report_Date 格式为yyyymmdd one example '20190108'
  • 如果它是一个 bigint,为什么要将它转换为一个 bigint?当您将 bigint 值转换为日期时间时,您可能想查看返回的日期。提示……这不是你想的那样。您应该先将其转换为 varchar。
  • 将其转换为 char(8),然后转换为 datetime。
  • 谢谢!我正在查看stackoverflow并试图找到解决方案,因此转换为bigint的原因是我的技能仍在通过编写SQL来发展。

标签: sql-server datetime bigint


【解决方案1】:

对于你的例子,你需要做这样的事情。

select convert(datetime, convert(char(8), 20190108))

我一生都无法弄清楚你想用你的 DATEADD 逻辑做什么。

【讨论】:

    【解决方案2】:

    要将 bigint/int 转换为 datetime,首先需要将其转换为 varchar。你可以这样做:

    select cast(cast(Report_Date as varchar(80)) as datetime)
    

    【讨论】:

    • 这也有效,但使用了另一种形式。谢谢
    猜你喜欢
    • 2021-05-16
    • 2011-04-08
    • 1970-01-01
    • 1970-01-01
    • 2019-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-07
    相关资源
    最近更新 更多