Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 将yyyymmdd(整型)转换为日期_Mysql_Sql - Fatal编程技术网

Mysql 将yyyymmdd(整型)转换为日期

Mysql 将yyyymmdd(整型)转换为日期,mysql,sql,Mysql,Sql,我需要使用函数,因此我需要日期类型 而我在db中看到的是一个int类型,比如20150101,代表2015年1月1日 我试过从_UNIXTIME下载,但显然不是我想要的: select FROM_UNIXTIME(20150101) from dual; +-------------------------+ | FROM_UNIXTIME(20150101) | +-------------------------+ | 1970-08-22 14:15:01 | +---------

我需要使用函数,因此我需要日期类型

而我在db中看到的是一个int类型,比如20150101,代表2015年1月1日

我试过从_UNIXTIME下载
,但显然不是我想要的:

select FROM_UNIXTIME(20150101) from dual;
+-------------------------+
| FROM_UNIXTIME(20150101) |
+-------------------------+
| 1970-08-22 14:15:01     |
+-------------------------+

我有办法将yyyymmdd(int)转换为日期类型吗?

您可以选择它作为
日期()
,它会自动转换

SELECT DATE(20150101) FROM dual;

20150101
不是unix时间戳,其格式为
ymd
您需要
date\u格式
对其进行格式化

mysql> select date_format('20150101','%Y-%m-%d') as date ;
+------------+
| date       |
+------------+
| 2015-01-01 |
+------------+
1 row in set (0.00 sec)


mysql> select unix_timestamp('2015-01-01');
+------------------------------+
| unix_timestamp('2015-01-01') |
+------------------------------+
|                   1420050600 |
+------------------------------+
1 row in set (0.00 sec)

mysql> select FROM_UNIXTIME(1420050600) ;
+---------------------------+
| FROM_UNIXTIME(1420050600) |
+---------------------------+
| 2015-01-01 00:00:00       |
+---------------------------+
1 row in set (0.00 sec)

像这样的方法应该会奏效:

SELECT WEEK(
         CONCAT(
           SUBSTR(20150101, 1, 4),
           '-',
           SUBSTR(20150101, 5, 2),
           '-',
           SUBSTR(20150101, 7, 2)
         )
       )
FROM dual

。。。假设字符数始终为8(如
20150101
)。

为什么不将其存储在日期或日期时间列中?为什么要让生活变得更加艰难?