【问题标题】:Convert an Int to a date field将 Int 转换为日期字段
【发布时间】:2016-10-11 15:53:48
【问题描述】:

我正在尝试将整数字段转换为实际日期字段。有人创建了一个“日期”字段,它只插入一个实际上是整数的“日期”。我正在尝试将其转换为实际日期。

我尝试了以下方法无济于事:

CAST(CAST(last_purch_date AS CHAR) AS DATE) as Create,
CAST( last_purch_date as datetime) as Created,
convert(datetime,last_purch_date) as Created1,
ISDATE(CONVERT(CHAR(8),last_purch_date)) as PleaseDearGodWORK

【问题讨论】:

  • 你知道日期的确切格式吗?根据这一点,您可以将其转换为字符串,然后再转换为日期时间,或者手动解析。
  • 值代表什么?您是否有一个整数示例,以及您希望该值与之相关的日期值?还有什么版本的 SQL Server - 如果在 2008 年之前,您将无法访问 DATE 或 TIME 类型。
  • 编辑您的问题并包括整数的样子。

标签: sql sql-server tsql


【解决方案1】:

简单的日期转换可以工作

Select cast(cast(20161011 as varchar(8)) as date)

返回

2016-10-11

如果您的数据有问题,您也可以使用 Try_Convert()

Select Try_Convert(date,cast(2610 as varchar(8)))

返回

NULL

【讨论】:

  • 从字符串转换日期和/或时间时转换失败。
  • @donviti 查看更新的答案.. Try_Convert 我还假设 int 是 YYYYMMDD
  • 工作代码:Try_Convert(date,cast(last_purch_date as varchar(8)))
  • 请记住,Try_Convert 将在转换失败时返回 NULL 值,因此您可能应该检查哪些失败以确保没有丢失/无效数据。
  • @donviti 太棒了!我误解了您对返回的所有记录的评论,我认为所有记录都是空的。做得好。欢呼
【解决方案2】:
SELECT convert(date,CONVERT(varchar(8),[columname],101))

【讨论】:

  • 从字符串转换日期和/或时间时转换失败。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-01
  • 1970-01-01
  • 2018-10-19
  • 2022-10-05
  • 2020-10-03
  • 2023-04-07
相关资源
最近更新 更多