add batch remove batch split batch comment selection show hidden batches hide batch highlight batch
db<>fiddle
donate feedback about
By using db<>fiddle, you agree to license everything you submit by Creative Commons CC0.
select version();
version()
5.7.35
--
--
-- Test of NOW(p) at various values of p - checking if rounding or truncation
-- occurs
--
SELECT 'NOW()' , NOW() UNION ALL
SELECT 'NOW(0)', NOW(0) UNION ALL
SELECT 'NOW(1)', NOW(1) UNION ALL
SELECT 'NOW(2)', NOW(2) UNION ALL
SELECT 'NOW(3)', NOW(3) UNION ALL
SELECT 'NOW(4)', NOW(4) UNION ALL
SELECT 'NOW(5)', NOW(5) UNION ALL
SELECT 'NOW(6)', NOW(6);

--
-- A few runs of the fiddle clearly shows that the value is truncated and not
-- rounded, to using NOW(3) for millisecond precision will not risk
-- chronological anomalies!
--
NOW() NOW()
NOW() 2021-12-28 10:27:55.000000
NOW(0) 2021-12-28 10:27:55.000000
NOW(1) 2021-12-28 10:27:55.800000
NOW(2) 2021-12-28 10:27:55.880000
NOW(3) 2021-12-28 10:27:55.884000
NOW(4) 2021-12-28 10:27:55.884200
NOW(5) 2021-12-28 10:27:55.884210
NOW(6) 2021-12-28 10:27:55.884212
CREATE TABLE now_test
(
s TIMESTAMP,
t TIMESTAMP(0) NULL DEFAULT NULL,
u TIMESTAMP(1) NULL DEFAULT NULL,
v TIMESTAMP(2) NULL DEFAULT NULL,
w TIMESTAMP(3) NULL DEFAULT NULL,
x TIMESTAMP(4) NULL DEFAULT NULL,
y TIMESTAMP(5) NULL DEFAULT NULL,
z TIMESTAMP(6) NULL DEFAULT NULL
);
INSERT INTO now_test VALUES
(NOW(), NOW(0), NOW(1), NOW(2), NOW(3), NOW(4), NOW(5), NOW(6));
SELECT 'NOW()' , 's' AS dt, s AS ts FROM now_test UNION
SELECT 'NOW(0)', 't' , t FROM now_test UNION
SELECT 'NOW(1)', 'u' , u FROM now_test UNION
SELECT 'NOW(2)', 'v' , v FROM now_test UNION
SELECT 'NOW(3)', 'w' , w FROM now_test UNION
SELECT 'NOW(4)', 'x' , x FROM now_test UNION
SELECT 'NOW(5)', 'y' , y FROM now_test UNION
SELECT 'NOW(6)', 'z' , z FROM now_test;

--
-- As with the SELECTs above, a few runs of the fiddle clearly show that the
-- value is truncated at 3 digits for the 'w' (TIMESTAMP(3)) field
--
NOW() dt ts
NOW() s 2021-12-28 10:27:55.000000
NOW(0) t 2021-12-28 10:27:55.000000
NOW(1) u 2021-12-28 10:27:55.900000
NOW(2) v 2021-12-28 10:27:55.900000
NOW(3) w 2021-12-28 10:27:55.902000
NOW(4) x 2021-12-28 10:27:55.902000
NOW(5) y 2021-12-28 10:27:55.902070
NOW(6) z 2021-12-28 10:27:55.902073
SELECT
table_name AS "The table",
data_length AS "Data length"
FROM
information_schema.tables
WHERE
TABLE_NAME = 'now_test'
ORDER BY
1 + 2
DESC;
The table Data length
now_test 16384
SHOW VARIABLES LIKE 'innodb_page_size';
Variable_name Value
innodb_page_size 16384