内连接两个数据集,但没有任何错误的返回(日期格式问题)?

问题描述 投票:0回答:1

我是SQL新手,目前我正在做一个关于连接两个数据集的任务,其中一个数据集是我自己创建的,这是我使用的查询。

USE `abcde`;
CREATE TABLE `test_01`( 
`ID` varchar(50) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
`NUMBER01` bigint(20) NOT NULL DEFAULT '0',
`NUMBER02` bigint(20) NOT NULL, 
`date01` date DEFAULT NULL, 
PRIMARY KEY (`ID`, `date01`))

然后我把csv文件中的数据加载到这个表中,csv文件是这样的。

ID       NUMBER01    NUMBER02    DATE01
aaa=ee   12345678    235896578   **2009-01-01T00:00:00**

如果我查询这个新创建的表,它看起来是这样的('DATE01'的格式改变了)。

ID       NUMBER01    NUMBER02    DATE01
aaa=ee   12345678    235896578   **2009-01-01**

另一个数据集,我查询并导出到csv文件中,date01列的格式是这样的: 01/12/1979 而在SQL中,其格式如下 1979-12-01.

我还用select * from information_schema.columns 来检查我需要加入的列的数据类型,对于新创建的数据集。enter image description here

另一个数据集的日期列是:enter image description here不同的是: 1. csv中日期列的格式出现不同2. 在cv中,日期列的格式出现了不同3. COLUMN_DEFAULT 不同,一个是 0000-00-00另一个是 NULL.

我不知道为什么我得到了空的输出的原因可能是因为在 "日期 "格式的差异,但我不知道如何使他们相同的,所以我可以得到的东西在输出,有人能给我一些提示?谢谢大家了。

mysql mysql-workbench sqldatatypes column-defaults
1个回答
1
投票

DATE01'的格式发生了变化。

当然,DATE数据类型不包含时区信息组件。

我不知道为什么我得到的是空的输出,可能是因为 "日期 "格式的不同。

如果输入值有一些缺点(比如错误的数据格式),那么相应的值将被截断或设置为NULL。请看--在导入过程中,你必须得到一堆类似于 "截断错误值 "的警告。

如果CSV中的日期字段有错误的格式,那么你必须使用中间的用户定义变量来接受原始值,并在SET子句中应用适当的转换表达式。例如

LOAD DATA INFILE ...
INTO TABLE tablename (field1, ..., @date01)
SET date01 = STR_TO_DATE(@date01, '%d/%m/%Y');
© www.soinside.com 2019 - 2024. All rights reserved.