MySQL:为什么date对象总是显示“0”;0";?

MySQL:为什么date对象总是显示“0”;0";?,mysql,Mysql,我正在尝试创建一个带有日期格式的一列的表。 下面是我这样做的代码: CREATE TABLE Sales (`CustomerID` int, `mydate` date, `amount` float(2)) ; INSERT INTO Sales (customerID, mydate, amount) VALUES (10, 8/2/96, 2540.78), (20, 1/30/99, 1800.54), (30,7/14/95, 460.3

我正在尝试创建一个带有日期格式的一列的表。 下面是我这样做的代码:

CREATE TABLE Sales
    (`CustomerID` int, `mydate` date,  `amount` float(2))
;

INSERT INTO Sales
    (customerID, mydate, amount)
VALUES
    (10, 8/2/96,  2540.78),
    (20, 1/30/99, 1800.54),
    (30,7/14/95, 460.33), 
    (10, 6/29/98,2400),
    (50, 2/3/98, 600.28),
    (60, 3/2/98, 720),
    (10, 7/6/98, 150)
;
但我的结果总是:

10|0|2540.78                                                                                                                              
20|0|1800.54                                                                                                                              
30|0|460.33                                                                                                                               
10|0|2400.0                                                                                                                               
50|0|600.28                                                                                                                               
60|0|720.0                                                                                                                                
10|0|150.0 
所以date列基本上只显示0

我使用这个在线IDE来帮助我执行这段代码(我相信这是一个执行MySQL的在线IDE):

我尝试将数据类型更改为“timestamp”或“datetime”,但都不起作用。
感谢您的帮助

使用正确的mySQL日期格式,它应该可以工作

“。。。 日期类型用于包含日期部分但不包含时间部分的值。MySQL检索并以“YYYY-MM-DD”格式显示日期值。支持的范围为“1000-01-01”到“9999-12-31”…”

另外,请注意,不要将金额(货币)存储为浮动。任何需要特定数量的小数且在浮点数学中没有错误的数据,都需要存储为数字或小数,并具有小数位数和精度。因此,不要使用
金额浮动(2)
而使用
金额数字(10,2)
(将10设置为计划小数左边的最大值,然后添加5是我的规则。(3因为小数增长2(如果需要更高的精度,请添加更多),假设允许小数前面有8个值,2个小数

简单地说:任何时候使用浮点或双数据类型都会为小数保留特定的值,这会给以后带来麻烦。

考虑在精度无关紧要的情况下使用float和double数据类型,例如6.22*10^23()之类的大数字在科学领域通常不关心6.22之后的任何事情非常大的数字或非常小的数字是有意义的,但在处理精度重要的货币时很少

更多信息:

  • (特定于sql server但相关)

工作

mysql insert的默认日期格式为YYYY-MM-DD,因此8/2/96的字符串将为'1996-8-2',这允许mysql隐式地将字符串转换为日期;否则数据库将尝试通过取8/2/96进行计算,并将其转换为一个似乎返回0的日期。非常感谢您的回答,xQbert!但是quotat是的,否则这是一个数学表达式;)哇。很高兴知道!我肯定用谷歌搜索错了东西。非常感谢大家!!!:)非常感谢编辑!那我们什么时候用浮子呢?非常感谢@xQbert!!我认为float应该是一个带小数的数字,因此更精确,或者至少这是我在Java中学到的。这完全违反直觉。
INSERT INTO Sales
    (customerID, mydate, amount)
VALUES
    (10, '1996-8-2',  2540.78),
    (20, '1999-1-30', 1800.54),
    (30, '1995-7-14', 460.33), 
    (10, '1998-6-29', 2400),
    (50, '1998-2-3',  600.28),
    (60, '1998-3-2',   720),
    (10, '1998-7-6',   150)