252

timestampMySQLのを日付に変換したい。

user.registrationフィールドを。としてテキストファイルにフォーマットしたいと思いますyyyy-mm-dd

これが私のSQLです:

$sql = requestSQL("SELECT user.email, 
                   info.name, 
                   FROM_UNIXTIME(user.registration),
                   info.news
                   FROM user, info 
                   WHERE user.id = info.id ", "export members");

私はまた、日付変換を試しました:

DATE_FORMAT(user.registration, '%d/%m/%Y')
DATE(user.registration)

テキストファイルを書き込む前に結果をエコーすると、次のようになります。

email1; name1; DATE_FORMAT(user.registration、'%d /%m /%Y'); news1

email2; name2; news2

そのフィールドを日付に変換するにはどうすればよいですか?

4

11 に答える 11

459
DATE_FORMAT(FROM_UNIXTIME(`user.registration`), '%e %b %Y') AS 'date_formatted'
于 2012-09-27T20:59:00.497 に答える
90

日付を取得するには、それができcastます

cast(user.registration as date)

特定のフォーマットを使用するにはdate_format

date_format(registration, '%Y-%m-%d')

SQLFiddleデモ

于 2012-02-12T18:48:23.550 に答える
74

タイムスタンプをMYSQLで日付に変換する

整数のタイムスタンプでテーブルを作成します。

mysql> create table foo(id INT, mytimestamp INT(11));
Query OK, 0 rows affected (0.02 sec)

いくつかの値を挿入します

mysql> insert into foo values(1, 1381262848);
Query OK, 1 row affected (0.01 sec)

見てください

mysql> select * from foo;
+------+-------------+
| id   | mytimestamp |
+------+-------------+
|    1 |  1381262848 |
+------+-------------+
1 row in set (0.00 sec)

数値をタイムスタンプに変換します。

mysql> select id, from_unixtime(mytimestamp) from foo;
+------+----------------------------+
| id   | from_unixtime(mytimestamp) |
+------+----------------------------+
|    1 | 2013-10-08 16:07:28        |
+------+----------------------------+
1 row in set (0.00 sec)

読み取り可能な形式に変換します。

mysql> select id, from_unixtime(mytimestamp, '%Y %D %M %H:%i:%s') from foo;
+------+-------------------------------------------------+
| id   | from_unixtime(mytimestamp, '%Y %D %M %H:%i:%s') |
+------+-------------------------------------------------+
|    1 | 2013 8th October 04:07:28                       |
+------+-------------------------------------------------+
1 row in set (0.00 sec)
于 2014-02-18T00:06:55.593 に答える
22

registrationフィールドが実際にタイプである場合は、次のTIMESTAMPことを実行できるはずです。

$sql = "SELECT user.email, 
           info.name, 
           DATE(user.registration), 
           info.news
      FROM user, 
           info 
     WHERE user.id = info.id ";

登録はyyyy-mm-ddと表示されているはずです

于 2012-02-12T19:03:36.887 に答える
12

mysqlのDATE関数を使用するだけです。

mysql> select DATE(mytimestamp) from foo;
于 2016-02-03T01:02:50.017 に答える
8

に変換する必要timestampがありdateます。

select FROM_UNIXTIME(user.registration, '%Y-%m-%d %H:%i:%s') AS 'date_formatted'

FROM_UNIXTIME

于 2018-02-28T05:54:57.197 に答える
6

FROM_UNIXTIME(unix_timestamp, [format])は、あなたが必要とすることすべてです

FROM_UNIXTIME(user.registration, '%Y-%m-%d') AS 'date_formatted'

FROM_UNIXTIME数値を取得してDATEオブジェクトに変換する
か、フォーマット文字列が指定されている場合はそれを文字列として返します。

以前の解決策は、最初の日付オブジェクトを取得し、それを2番目の関数でフォーマットすることでしたDATE_FORMAT...しかし、これはもはや必要ありません

于 2019-08-16T09:30:21.377 に答える
3

出力でクエリを取得している場合は、実際に結果をエコーするコードを表示する必要があります。requeteSQLを呼び出すコードを投稿できますか?

たとえば、phpで一重引用符を使用した場合、値ではなく変数名が出力されます。

echo 'foo is $foo'; // foo is $foo

これはあなたの問題とまったく同じように聞こえますが、これが原因であると私は確信しています。

また、@記号を削除して、より多くの情報を提供できるかどうかを確認してください。

となることによって

$SQL_result = @mysql_query($SQL_requete); // run the query

になります

  $SQL_result = mysql_query($SQL_requete); // run the query

これにより、クエリがエラーをスローしている場合にエラー抑制が停止します。

于 2012-02-12T20:01:04.017 に答える
3

ここで説明するように、「date」関数を使用して実行しました。

(SELECT count(*) as the-counts,(date(timestamp)) as the-timestamps FROM `user_data` WHERE 1 group BY the-timestamps)
于 2018-04-24T12:03:36.633 に答える
2

列のデータ型を変更する場合は、最初にからTIMESTAMPに変換するだけINTです。

ALTER TABLE table_name MODIFY column_name INT;

そして:INT_DATE

ALTER TABLE table_name MODIFY column_name DATE;

ただし、列を変更するつもりはなく、SELECTのみが必要な場合は、date()関数を使用できます。

SELECT date(your_timestamp_column) FROM your_table;
于 2021-10-10T09:29:10.250 に答える
1

試す:

SELECT strftime("%Y-%d-%m", col_name, 'unixepoch') AS col_name

タイムスタンプをミリ秒単位でyyyy-mm-dd文字列にフォーマットします。

于 2016-02-04T14:13:48.340 に答える