問題タブ [str-to-date]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
mysql - DATETIME フィールドを比較する場合の STR_TO_DATE() と CONSTANT の比較
DATETIME
「created_at」という名前のフィールドを持つテーブルがあります。次のような 2 つのクエリを実行してみます。
SELECT * FROM myTable WHERE created_at BETWEEN '2015-03-15 10:25:00' AND '2015-03-25 10:30:00';
SELECT * FROM myTable WHERE created_at BETWEEN STR_TO_DATE('2015-03-15 10:25:00', '%Y-%m-%d %H:%i:%s') AND STR_TO_DATE('2015-03-25 10:30:00', '%Y-%m-%d %H:%i:%s');
私は常に最初のクエリを使用していましたが、最近、2 番目のアプローチが比較する最良の方法であると説明している記事に出くわしましたDATETIME
。残念ながら、そのアプローチが最善の方法である理由についての説明は含まれていません。
さて、いくつか質問があります:
- これら2つのアプローチに違いはありますか?
- どちらの方法がより好ましいですか?
ありがとう!
mysql - MySQL インポート ファイルで 60 秒または分を超える
現在、次のような行でCSVファイルをMySQLテーブルにインポートしています。
基本的には、PBX からの CDR です。ただし、私は情報源を制御できないため、このファイルをそのまま受け取るだけです。これまでのところ、列は次のとおりです。
次のように、LOAD DATA INFILE を使用してデータをインポートしました。
CARDID は、ソース ファイル名を格納するための単なるフィールドです
問題は、DURATION が問題を引き起こしていることです。参照: 一部の行は次のようになります。
つまり、期間は 140 分 28 秒です。ただし、その値を保存すると、エラーが発生します。これは次の理由によります。
%i は 00 から 59 の間の分を想定しているためです。
SEC_TO_TIME を使用しようとしましたが、失敗しました (最初の番号だけが必要です):
その時間を正しい形式で保存するために、クエリ (SQL だけでお願いします) を変更するにはどうすればよいですか?
mysql - str_to_date の使用時に日付文字列の文字を無視する
日付フィールドがテキストとして保存されている XML ファイルからデータをインポートしています。通常、これは mysql 内で簡単に変換できますが、問題は、日付に%e
1st、2nd、3rd、4th などとして格納された要素が含まれていることです。そのため、標準の一貫したフォーマット文字列を適用することができなくなります。
フィールド内のデータの例は次のdate
とおりです。
2014 年 8 月 25 日月曜日
2014年11月1日土曜日
私のクエリは次のとおりです。
日付文字列に追加の文字があるため、これは失敗します。そのため、フォーマット文字列を調整しましたが'%W %eth %M %Y'
、予想どおり、これは「th」を含む日付に対してのみ機能します。日付に含まれる「st」と「nd」の文字を除外する方法がわかりません。
mysql - STR_TO_DATE および LOAD DATA INFILE のフォーマットの問題
皆さん、助けてくれてありがとう。日付の書式設定でエスケープされていない文字だったようです: '%%d/%%m/%%Y %%H:%%i' が必要でした。これはバッチ ファイルから実行されているため、考慮していません。
SQL コマンドを実行するバッチ ファイルがあり、何が必要かは理解できたと思いますが、すべてをまとめることができないようです。以下のコードを実行すると、すべてが正しくインポートされますが、STR_TO_DATE の書式設定をオフにするか、2 番目の列をターゲットにする方法をオフにする必要があります。以下のスクリプトを実行したときの DATETIME 列。
これは、コマンド プロンプト ウィンドウから表示されているもののスクリーンショットです。疑わしい部分は緑色で強調表示されています: http://i.imgur.com/TztR31p.png?1
何か案は?
以下は、LOAD DATA INFILE関数でアクセスしているファイルのサンプルです