我是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
来检查我需要加入的列的数据类型,对于新创建的数据集。
另一个数据集的日期列是:不同的是: 1. csv中日期列的格式出现不同2. 在cv中,日期列的格式出现了不同3. COLUMN_DEFAULT
不同,一个是 0000-00-00
另一个是 NULL
.
我不知道为什么我得到了空的输出的原因可能是因为在 "日期 "格式的差异,但我不知道如何使他们相同的,所以我可以得到的东西在输出,有人能给我一些提示?谢谢大家了。
DATE01'的格式发生了变化。
当然,DATE数据类型不包含时区信息组件。
我不知道为什么我得到的是空的输出,可能是因为 "日期 "格式的不同。
如果输入值有一些缺点(比如错误的数据格式),那么相应的值将被截断或设置为NULL。请看--在导入过程中,你必须得到一堆类似于 "截断错误值 "的警告。
如果CSV中的日期字段有错误的格式,那么你必须使用中间的用户定义变量来接受原始值,并在SET子句中应用适当的转换表达式。例如
LOAD DATA INFILE ...
INTO TABLE tablename (field1, ..., @date01)
SET date01 = STR_TO_DATE(@date01, '%d/%m/%Y');