Didn't find the answer from @nbk satisfying enough for my needs (especially "No, as long as you have no micro seconds in your datetime and a really very slow server, it could be possible").
So I simulated a kind of very slow server.
My Linux desktop MB has 6 cores, I made this C program
#define COUNT 10000000000L
double busy() {
volatile double z = rand() / M_PI;
for(long l=0 ; l<COUNT ; l++) {
z += sqrt(M_PI);
}
return z;
}
and in the main
int n = atoi(*++argv); // input 10
while(n--) {
if ( ! fork()) {
printf("%d => %lf\n", n, busy());
exit(0);
}
}
pid_t wpid;
int status = 0;
while ((wpid = wait(&status)) > 0);
That makes n threads very busy. With n = 10, the desktop was really busy...
While that was running (as root, to ensure the system doesn't try to salvage some resources for itself :) I had prepared this earlier
create table a (num int auto_increment primary key,
d1 datetime(6), d2 datetime(6), d3 datetime(6), d4 datetime(6));
and a file made of 1000 lines
insert into a values(null,now(6),now(6),now(6),now(6));
So when the PC was running 10 threads busy() on 6 cores [all were at 100%], I injected the 1000 inserts into the table, took a bit longer than usual, then
select * from a where d1 <> d2 or d1 <> d3 or d1 <> d4;
Empty set (0.00 sec)
Yes! MySQL is really well made! (seriously, I'm always amazed at the quality in algorithms and system programming behind this DBMS).