SQL中将INT类型的YYYYMMDDHHMMSS改为VARCHAR的YYYY-MM-DD

Posted

技术标签:

【中文标题】SQL中将INT类型的YYYYMMDDHHMMSS改为VARCHAR的YYYY-MM-DD【英文标题】:Change YYYYMMDDHHMMSS of INT type to YYYY-MM-DD of VARCHAR in SQL 【发布时间】:2020-07-21 22:38:14 【问题描述】:

在我的 mysql 服务器表中,有一列以 INT 类型的 YYYYMMDDHHMMSS 格式存储时间信息。一个例子是 20200715130000。当我查询这些数据时,我想将它们转换为 VARCHAR 类型的 YYYY-MM-DD 格式。例如:“2020-07-15”。目前我的做法是在做

(CONCAT(SUBSTRING(CAST(my_time as VARCHAR), 1, 4),
'-', SUBSTRING(CAST(my_time as VARCHAR), 5, 2),
'-', SUBSTRING(CAST(my_time as VARCHAR), 7, 2)))

如果这些列被称为my_time。但我不确定这是否是重新格式化这些数据的有效而优雅的方式。有人可以看看吗?提前致谢。

【问题讨论】:

您不应该使用varcharinteger 来存储日期/时间。使用date/time types 之一。 【参考方案1】:

您可以只转换为日期:

select date(left(my_time, 8))

或:

select date(my_time / 1000000)

【讨论】:

左边..left(my_time...)是什么原因@ @linkonabe 。 . .我想这不是真的需要。但是,我很不舒服,因为这个问题称为 20200715130000 和 INT,但是 20,200,715,130,000 太大而无法放入常规大小的整数中。

以上是关于SQL中将INT类型的YYYYMMDDHHMMSS改为VARCHAR的YYYY-MM-DD的主要内容,如果未能解决你的问题,请参考以下文章

如何在SQL Server中将datetime值转换为yyyymmddhhmmss?

sqlserver中将datetime类型转换为yyyyMMddHHmmss格式

SQL怎么取当前时间是YYYYMMDDHHMMSS格式的?

在 SQL Server 2008 中将 NVARCHAR 转换为 INT 数据类型

在Sql中将 varchar 值 '1,2,3,4,5,6' 转换成数据类型 int

SQLServer中将yyyy:MM:dd HH:mm:ss.sss转为yyyyMMddHHmmss