【问题标题】:Convert Date to Long using query使用查询将日期转换为长整数
【发布时间】:2014-04-20 20:07:16
【问题描述】:

我有一个名为 User 的表,其中有一列 activityDate 为 DataType DATETIME 。

现在我已将 DateTime 中 activityDate 列的 DataType 更改为 Long 。

所以新值插入长值。

如何在不改变其先前值的情况下将表的现有数据转换为

长时间使用查询 MySql、SQL SERVER 和 ORACLE。

我没有发现要更改的查询。

所以请指导我如何实现这一目标。

【问题讨论】:

  • 什么是 LONG ? sql server 中没有称为 LONG 的数据类型。这是你要找的东西吗? SELECT CAST(DateTime_Column AS FLOAT)
  • 您有一个long 列并且不想将现有数据转换为long?这应该如何工作?
  • 在 SQL SERVER numeric(19,0) 中。我在我的实体中使用了 Long 。
  • 您是否尝试过类似SELECT CAST(DateTime_Column AS NUMERIC(19,0)) 的方法,看看这是否为您提供了所需的结果
  • 于尔根 d。当我将数据类型从 dateTime 更改为 long 时,我想将现有值转换为 long

标签: mysql sql sql-server oracle oracle11g


【解决方案1】:

如果您使用的是 SQL Server 2012,您可以使用 FORMAT 转换为您想要的任何内容

DECLARE @date DATETIME = '03/15/2014 16:35:44'

SELECT @date AS DateTimeColumn
       ,CONVERT(DECIMAL(19, 0), FORMAT(@date, 'yyyyMMddHHMMss')) AS DecimalColumn

在示例中,我使用FORMAT 剥离以仅显示日期时间的数字部分,然后将其转换为十进制。

适用于 SQL Server 2008 R2 及更早版本。你可以使用

DECLARE @date DATETIME = '03/15/2014 16:35:44'

SELECT @date AS DateTimeColumn
,CONVERT(DECIMAL(19, 0), REPLACE(REPLACE(REPLACE(CONVERT(VARCHAR(20), @date, 120), '-', ''), ' ', ''),':', '')) AS DecimalFromVarchar

首先转换为具有您想要的特定样式的 varchar,而不是仅删除非数字字符,然后再转换为十进制。

FORMAT - syntax here
CONVERT - syntax here

【讨论】:

  • 我使用的是 sql server 2008 R2 格式不支持。
  • 在这种情况下,只需使用 CONVERT 和多个替换。
猜你喜欢
  • 1970-01-01
  • 2019-02-20
  • 1970-01-01
  • 2021-08-17
  • 2018-10-16
  • 2022-07-07
  • 1970-01-01
相关资源
最近更新 更多