0

そのため、私は自分のプロジェクト (以前の StackOverflow の質問へのリンク) でかなりうまくやっており、かなりのことを学ぶことができましたが、この 1 つの問題があり、何日も私を悩ませてい、解決できないようです。それ。

これは、UNIX_TIMESTAMP 呼び出しを使用して SQL データベースの日付を UNIX 時刻形式に変換することに関係していますが、何らかの理由で、テーブル内の日付のセットが 1 つだけで問題が発生しています!

==============

だから、これらは私が得ている値です -

#abridged here, see the results from the SELECT statement below to see the rest
#of the fields outputted

| firstVst   | nextVst    | DOB       |
| 1206936000 | 1396238400 |         0 |
| 1313726400 | 1313726400 | 278395200 |
| 1318910400 | 1413604800 |         0 |
| 1319083200 | 1413777600 |         0 |

この SELECT ステートメントを使用すると、

SELECT SQL_CALC_FOUND_ROWS *,UNIX_TIMESTAMP(firstVst) AS firstVst,
UNIX_TIMESTAMP(nextVst) AS nextVst, UNIX_TIMESTAMP(DOB) AS DOB FROM people 
ORDER BY "ref DESC";

だから私の大きな質問は、なぜ私のDOBの4つのうち3つが0の日付に設定されているのですか(私のPCではIE 12/31/1969)?これが私の他の分野で起きていないのはなぜですか?


より単純な SELECT ステートメントを使用してデータをよく見ることができ、DOB フィールドは問題ないように見えます...?

#formatting broken to change some variable names etc.

select * FROM people;

| ref | lastName | firstName | DOB      | rN   | lN   | firstVst  | disp | repName        | nextVst   |
| 10001 | BlankA   | NameA     | 1968-04-15 | 1000000 | 4600000 | 2008-03-31 | Positive  | Patrick Smith | 2014-03-31 |
| 10002 | BlankB   | NameB     | 1978-10-28 | 1000001 | 4600001 | 2011-08-19 | Positive  | Patrick Smith | 2011-08-19 |
| 10003 | BlankC   | NameC     | 1941-06-08 | 1000002 | 4600002 | 2011-10-18 | Positive  | Patrick Smith | 2014-10-18 |
| 10004 | BlankD   | NameD     | 1952-08-01 | 1000003 | 4600003 | 2011-10-20 | Positive  | Patrick Smith | 2014-10-20 |
4

1 に答える 1

1

これらの DoB は 1969 年 12 月 31 日より前のものであり、UNIX エポックはそれから始まるため、それより前のものはすべて負になります。

ウィキペディアから:

Unix 時間 (POSIX 時間) は、1970 年 1 月 1 日木曜日の協定世界時 (UTC) 00:00:00 から経過した秒数として定義される、瞬間を表すためのシステムであり、閏秒はカウントされません。

もう少し詳しく説明します。基本的に、あなたがやろうとしていることは不可能です。目的によっては、これを行う別の方法があるかもしれませんが、UNIX タイムスタンプを使用することは、おそらくそのような日付には最適ではありません。

于 2013-07-14T23:43:38.950 に答える