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
。但我不确定这是否是重新格式化这些数据的有效而优雅的方式。有人可以看看吗?提前致谢。
在
【问题讨论】:
您不应该使用varchar
或integer
来存储日期/时间。使用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 Server 2008 中将 NVARCHAR 转换为 INT 数据类型