- ベストアンサー
postgreSQLでの日付型比較について
med2dicの回答
postgresqlのバージョン、バージョンが同じでもその環境によって動作が異なります。 質問をする際は最低限バージョンを明記した方が回答しやすくなります。 >CURRENT_DATEは日付型でSUBSTRでとりだした日付は文字列 >なのに何故正しく比較できているのでしょうか? >日付型の形式の文字列であれば、RDBMSがかってに日付型にしてくれるのでしょうか? ご想像のとおりです。いい感じに処理をしてもらっている状態です。 本来は日付と文字列のどちらかを変換して型をそろえる必要がありますし、SUBSTRの引数も日付型ではなく文字列を与えるべきです。 ちなみに私は8.4.1を使用していますが、提示されているようなSQLはエラーとなります。 参考URLをひととおり読んでみてください。 7.4から8.4にバージョンアップした経験があるのですが、システムで発行しているSQLがバタバタとエラーになり、日頃いい加減なSQLを書いていたのだと思い知らされました。
関連するQ&A
- PostgreSqlについて
おはようございます。 質問させてください。 テーブルのカラムにtimestamp型のフィールドがあるとします。 テーブルinsertの時に現在の時間をいれたいのですが、どのような値を入れればいいのでしょうか? test_tbl-------------- ID:INTEGER DATE:TIMESTAMP ---------------------- insert into test_tbl (ID, DATE) values (1, ****); ****の部分にnow, dateとかそんな関数はあるのでしょうか?
- ベストアンサー
- その他(データベース)
- ACCESS97のモジュールで 日付の計算をしたい
以前の例題を検索したのですが 改めて質問します。 ACCESS97のモジュールで 日付の計算をしたいのです。 例えば ある日付を入力すれば、その2週間後の日付を取得したいのです。 テキストボックス "日付"で入力するとします Dim Sdate As Date Dim Edate As Date Sdate = Format(Me.日付, "yy/mm/dd") Edate = Format(Sdate+14, "yy/mm/dd") ← ではエラーになります。 Q どうすればいいのでしょうか?
- ベストアンサー
- オフィス系ソフト
- VBA 日付型を8桁数値へ変換
VBAの中で、Date型の日付をバッチファイルに渡す時に、8桁数値へ変換したいのですが、0埋めのやり方が分からずに困っております。 Date型 yyyy/mm/dd 8桁数値 yyyymmdd Private Sub cmdBSubmit_Click() Dim rc As Integer Dim sDate As Date Dim eDate As Date '開始日・終了日処理 sDate = DateAdd("d", -5, txtsDate) eDate = DateAdd("d", 5, txteDate) Debug.Print "----------------------" Debug.Print "開始日-5:" & sDate Debug.Print "終了日+5:" & eDate 'パブリック変数へ、日付格納 sDateP = Year(sDate) & Month(sDate) & Day(sDate) eDateP = Year(eDate) & Month(eDate) & Day(eDate) Debug.Print "----------------------" Debug.Print "開始日:" & sDateP Debug.Print "終了日:" & eDateP rc = MsgBox("開始日 : " & sDate & vbCrLf & _ "終了日 : " & eDate & vbCrLf & _ "抽出を開始します宜しいですか?", vbYesNo + vbQuestion, "確認") If rc = vbYes Then '集計バッチを実行 'MsgBox "実行" Call 抽出 Else '中止 MsgBox "中止" End If End Sub 'パブリック変数へ、日付格納 sDateP = Year(sDate) & Month(sDate) & Day(sDate) eDateP = Year(eDate) & Month(eDate) & Day(eDate) この書き方だと、月・日が一桁の場合、例えば「2013/01/01」だと、”201311”になってしまいます。 これを、"20130101"にしたいのですが、どう書けば宜しいでしょか? 最初から、8桁日付で入力すればよいのでしょうか、入力した日付の前後5日を自動的に増やす必要がある為に上記の仕様にしてます。
- ベストアンサー
- Excel(エクセル)
- postgreSQLのupdateについて
postgresqlのupdateについて質問です。 一つのテーブルで二つの列と任意の文字を別の列へ結合するupdate文を作りたいのですが初心者なものでわかりやすくご教授いただけたら幸いです。 UPDATE テーブル名 SET 列3 = '文字' || "列1" || '文字' || "列2" WHERE 列 Is Null; 何卒、よろしくお願い致します。
- 締切済み
- PostgreSQL
- PostgreSQLのtimestamp型で時間(分)を抽出したい
PostgreSQLのあるテーブルで「開始時刻」と「終了時刻」というフィールドがあり、timestamp with timezone(例:2008-07-31 07:00:00+09)でデータを持っています。 例えば、日付に関係なく13:00から15:00までのデータを抽出したい場合、SQLのWHERE句にはどのように記述すればよろしいのでしょうか?
- ベストアンサー
- PostgreSQL
- PostgreSQLでのTimestamp列と数値列同士の演算での質問
PostgreSQLでのTimestamp列と数値列同士の演算での質問です。 Timestamp型のField:Aと、数値型のField:Bを保持するテーブルにて、 AのB分後を求める時刻の演算方法を教えてください。 単純に Select A + B from hoge だと、1日後になり時刻の部分が失われてしまいます。 下記のテーブルに対して発行すると A B --------------------------------------------------- 2010-01-01 09:00:00+09 1 2010-01-01 10:00:00+09 5 ?column? ------------ 2010-01-02 2010-01-06 が返ってきます。 分かる方がいましたら教えてください。 宜しくお願いいたします。
- ベストアンサー
- PostgreSQL
- SQL文にて・・・
質問があります。PostgreSQLです。 テーブル(test_tbl)があるとします。 テーブル構成は --------------------------- id ===== char(16) [英数文字格納] point ==== int2 add_date ==== timestamp --------------------------- このテーブルから idが2文字目から'di6ek68dh5ls7g'のレコードを取得したいと考えています。 レコード数がかなりおおいので パフォーマンスを重視したいのですが、 検索SQLがわかりません。 select * from test_tbl where id like '%di6ek68dh5ls7g'だとでると おもうのですが、 これ以上にパフォーマンスがあがる SQLがわかる方お願いいたします。
- ベストアンサー
- その他(データベース)
- 日付範囲内かつ時刻も範囲内のデータをとるには?
日付範囲内かつ時刻も範囲内のデータをとるには? 環境 postgreSQL7.4 date_tbl no | start_date | end_date ----------------------------------------------------- 1 | 2010-06-01 10:00:00 | 2010-06-03 15:00:00 例えば、上のような日付の範囲を設定するテーブルがあります。 現在の時刻が、date_tblで設定した範囲のデータを取得する条件式を記述するには どういう条件式を書けばいいでしょうか? 例えば、現在の時刻が下の範囲に該当する場合にnoを取得したい場合 2010-06-01の10:00:00~15:00:00 2010-06-02の10:00:00~15:00:00 2010-06-03の10:00:00~15:00:00
- ベストアンサー
- PostgreSQL
- PostgreSQLのテーブル構造を取得したい
現在PostgreSQLとPHP5を利用してアプリケーションを開発しております。 PHPにて現在すでに存在するPostgreSQLのテーブルの定義情報を取得するにはどうすればよろしいでしょうか。テーブルの定義情報は下記のようにSQLのCREATE文で取得したいと思っております。 CREATE TABLE favorite ( code serial NOT NULL, reg_date timestamp without time zone NOT NULL DEFAULT now(), update_date timestamp without time zone, title text, url text, u_id character varying(20) NOT NULL, enabled_flag smallint NOT NULL DEFAULT 1, CONSTRAINT web_favorite_pkey PRIMARY KEY (fv_code) ) 何卒よろしくお願いいたします。
- ベストアンサー
- PostgreSQL
- Postgresql 日付 文字列比較
現在Postgresqlの日付 文字列比較で困っています。 あるテーブルに更新日付を入力するカラムがあるのですが、 「SELECT * FROM test WHERE updatetime = '2013/07/26 12:07:13'」 というSQLを実行した場合、updatetimeが「2013/07/26 12:07:13」のデータが取得できません。 Create Castでキャストを作ってやる必要があるのでしょうか? もしくは別の方法がございましたらご教授をお願い致します。
- ベストアンサー
- PostgreSQL
お礼
ありがとうございました。 バージョンを書き忘れていてました、以後 気をつけます。 曖昧なSQLだと、バージョンをあげたときに 大変そうなので気おつけます。