type_datetime.test
上传用户:romrleung
上传日期:2022-05-23
资源大小:18897k
文件大小:4k
源码类别:

MySQL数据库

开发平台:

Visual C++

  1. #
  2. # testing different DATETIME ranges
  3. #
  4. --disable_warnings
  5. drop table if exists t1;
  6. --enable_warnings
  7. create table t1 (t datetime);
  8. insert into t1 values (101),(691231),(700101),(991231),(10000101),(99991231),(101000000),(691231000000),(700101000000),(991231235959),(10000101000000),(99991231235959),(20030100000000),(20030000000000);
  9. select * from t1;
  10. delete from t1 where t > 0;
  11. optimize table t1;
  12. check table t1;
  13. delete from t1;
  14. insert into t1 values("000101"),("691231"),("700101"),("991231"),("00000101"),("00010101"),("99991231"),("00101000000"),("691231000000"),("700101000000"),("991231235959"),("10000101000000"),("99991231235959"),("20030100000000"),("20030000000000");
  15. # Strange dates
  16. insert into t1 values ("2003-003-03");
  17. # Bug #7308: ISO-8601 date format not handled correctly
  18. insert into t1 values ("20030102T131415"),("2001-01-01T01:01:01"), ("2001-1-1T1:01:01");
  19. select * from t1;
  20. # Test some wrong dates
  21. truncate table t1;
  22. insert into t1 values("2003-0303 12:13:14");
  23. select * from t1;
  24. drop table t1;
  25. #
  26. # Test insert of now() and curtime()
  27. #
  28. CREATE TABLE t1 (a timestamp, b date, c time, d datetime);
  29. insert into t1 (b,c,d) values(now(),curtime(),now());
  30. select date_format(a,"%Y-%m-%d")=b,right(a+0,6)=c+0,a=d+0 from t1;
  31. drop table t1;
  32. #
  33. # Test of datetime and not null
  34. #
  35. CREATE TABLE t1 (a datetime not null);
  36. insert into t1 values (0);
  37. select * from t1 where a is null;
  38. drop table t1;
  39. #
  40. # Test with bug when propagating DATETIME to integer and WHERE optimization
  41. #
  42. create table t1 (id int, dt datetime);
  43. insert into t1 values (1,"2001-08-14 00:00:00"),(2,"2001-08-15 00:00:00"),(3,"2001-08-16 00:00:00"),(4,"2003-09-15 01:20:30");
  44. select * from t1 where dt='2001-08-14 00:00:00' and dt =  if(id=1,'2001-08-14 00:00:00','1999-08-15');
  45. create index dt on t1 (dt);
  46. select * from t1 where dt > 20021020;
  47. select * from t1 ignore index (dt) where dt > 20021020;
  48. drop table t1;
  49. #
  50. # Test of datetime optimization
  51. #
  52. CREATE TABLE `t1` (
  53.   `date` datetime NOT NULL default '0000-00-00 00:00:00',
  54.   `numfacture` int(6) unsigned NOT NULL default '0',
  55.   `expedition` datetime NOT NULL default '0000-00-00 00:00:00',
  56.   PRIMARY KEY  (`numfacture`),
  57.   KEY `date` (`date`),
  58.   KEY `expedition` (`expedition`)
  59. ) ENGINE=MyISAM;
  60. INSERT INTO t1 (expedition) VALUES ('0001-00-00 00:00:00');
  61. SELECT * FROM t1 WHERE expedition='0001-00-00 00:00:00';
  62. INSERT INTO t1 (numfacture,expedition) VALUES ('1212','0001-00-00 00:00:00');
  63. SELECT * FROM t1 WHERE expedition='0001-00-00 00:00:00';
  64. EXPLAIN SELECT * FROM t1 WHERE expedition='0001-00-00 00:00:00';
  65. drop table t1;
  66. create table t1 (a datetime not null, b datetime not null);
  67. insert into t1 values (now(), now());
  68. insert into t1 values (now(), now());
  69. select * from t1 where a is null or b is null;
  70. drop table t1;
  71. #
  72. # Let us check if we properly treat wrong datetimes and produce proper
  73. # warnings (for both strings and numbers)
  74. #
  75. create table t1 (t datetime);
  76. insert into t1 values (20030102030460),(20030102036301),(20030102240401),
  77.                       (20030132030401),(20031302030401),(100001202030401);
  78. select * from t1;
  79. delete from t1;
  80. insert into t1 values
  81.   ("2003-01-02 03:04:60"),("2003-01-02 03:63:01"),("2003-01-02 24:04:01"),
  82.   ("2003-01-32 03:04:01"),("2003-13-02 03:04:01"), ("10000-12-02 03:04:00");
  83. select * from t1;
  84. delete from t1;
  85. insert into t1 values ("0000-00-00 00:00:00 some trailer"),("2003-01-01 00:00:00 some trailer");
  86. select * from t1;
  87. drop table t1;
  88. #
  89. # Test for bug #7297 "Two digit year should be interpreted correctly even
  90. # with zero month and day"
  91. #
  92. create table t1 (dt datetime);
  93. # These dates should be treated as dates in 21st century
  94. insert into t1 values ("12-00-00"), ("00-00-00 01:00:00");
  95. # Zero dates are still special :/
  96. insert into t1 values ("00-00-00"), ("00-00-00 00:00:00");
  97. select * from t1;
  98. drop table t1;
  99. # End of 4.1 tests