UTC_TIMESTAMP()
とCONCAT (UTC_DATE(), '', UTC_TIME())
は機能的に同じですか?UTC_TIMESTAMP()VS. CONCAT(UTC_DATE()、 ''、UTC_TIME())
編集:私はそれをテストする場合
、UTC_TIMESTAMP()
はUNIX TIMESTAMPを返しません。 (MariaDB 10.xの場合)
UTC_TIMESTAMP()
とCONCAT (UTC_DATE(), '', UTC_TIME())
は機能的に同じですか?UTC_TIMESTAMP()VS. CONCAT(UTC_DATE()、 ''、UTC_TIME())
編集:私はそれをテストする場合
、UTC_TIMESTAMP()
はUNIX TIMESTAMPを返しません。 (MariaDB 10.xの場合)
いいえUTC_TIMESTAMPは文字列または数値を返します.CONCATは文字列を返します。
UTC_TIMESTAMP、UTC_TIMESTAMP([FSP])
が 'YYYY-MM-DD HH:MM:SS' の値と現在のUTCの日付と時刻を返すかどうかに応じて、またはYYYYMMDDHHMMSS形式関数 は、文字列または数値のコンテキストで使用されます。 https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_utc-timestamp
https://mariadb.com/kb/en/library/utc_timestamp/
CONCAT(str1は、STR2、...)
は引数を連結した結果の文字列を返します。
https://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_concat
https://mariadb.com/kb/en/library/concat/
create table test (real_ts timestamp, fake_ts varchar(40));
✓
insert into test (real_ts, fake_ts) values (utc_timestamp()+6, CONCAT (UTC_DATE(), '', UTC_TIME()));
✓
select * from test;
real_ts | fake_ts :------------------ | :----------------- 2017-11-09 06:57:15 | 2017-11-0906:57:09
insert into test (real_ts) values (utc_timestamp()+6) ;
✓
insert into test (real_ts) values (CONCAT (UTC_DATE(), '', UTC_TIME())+6) ;
Truncated incorrect DOUBLE value: '2017-11-0906:57:09'
dbfiddle here
私はは(それがうまくいく場合も)CONCAT
を信頼しないでしょう。実装が真夜中のちょうど前にと呼ばれ、ちょうどUTC_TIME()
と呼ばれる場合、どうでしょうか?おっと、一緒になった弦は一日オフです!
このような状況の可能性は非常に低いと思いますが、それは妥当と思われます。あなたが言うように厳密さに問題があります。 – Saturn
私は理解するのに数日かかる狡猾なバグは好きではありません。私がバグを見つけ出すとき、私は満足していると感じています(最初にそれを防ぐのではない)。それで、残りのコードが他の微妙なバグで埋まってしまうのではないかと心配しています。 –
実際に関連するタグを使用すると、MySQLでないMariaDBを使用します。 –
@Used_By_既に申し訳ありません。あなたの編集をありがとう。 – Saturn