AIと戦って、あなたの人生のリスク診断 >>

SQL Server 2005 EXPRESSを使って、
nvarchar型で作成されたyyyy/mm/ddの日付と
datetime型で作成されたyyyy/mm/ddの日付を比較し
WHERE '2007/05/04' > gettime()のようなSELECT文の
WHERE句を使って該当レコードを表示することが可能であれば
教えてください。

以上、宜しくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

CONVERT関数を使うとできます。


たとえば。
現在日時が 2007/05/22 17:48:10 だとします。
GETDATE()でその現在日時がDateTime型でとれます。
これをCONVERT関数を通して日付部分だけをnVarChar型に変換します。

CONVERT(NVARCHAR, GETDATE(), 111)

最後の「111」がフォーマットの指定で、「yyyy/MM/dd」形式で日付だけを持ってくる指定になります。

詳しくは参考URLのCONVERTの引数styleをご覧ください。

参考URL:http://msdn2.microsoft.com/ja-jp/library/ms18792 …
    • good
    • 0
この回答へのお礼

Kuppycat様

早速のご回答ありがとうございます。
ご回答が大ヒントになり解決しました。
心より厚くお礼申し上げます。

出来上がったSELECT文を公開いたします。

SELECT 名前, 文字列
FROM tbl_文字列
WHERE (文字列 >= CONVERT(NVARCHAR, 日付, 111))

【補足】
フィールド名:文字列…nvarchar型でyyyy/mm/ddを入力
フィールド名:日付…datetime型でyyyy/mm/ddを入力

以上です。

お礼日時:2007/05/23 17:25

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q日付型のフィールドに空白を入れる方法を教えてください

ASP(VBScript)でSQLサーバにINSET INTO文を使ってデータを格納しているのですが、日付の部分がNULLの時、「1900/1/1」が入ってしまいます。
そのまま、空白を入れる方法はどうやったらよろしいのでしょうか?

TABLE1の内容は
番号|内容|日付です。

INSERT INTO TABLE1 VALUES ( 1, 'あいう', '')

結果
1|あいう|1900/1/1

Aベストアンサー

あとは、プログラムの書き方次第ですね、、、


If hensu=Null Or hensu="" Then
dt = "NULL"
Else
dt = "'" & hensu & "'"
End IF

E_SQL = "INSERT INTO TABLE1 VALUES & _
"( 1,'あいう', " & dt& ")"
の様に書きます。

QMAX値を条件にデータを取得するには?

SQL文で困っています。
ご教授下さい。


下記のようなデータがあった場合、それぞれの区分毎に
年月が最大(最新)のデータを取得したいです。
(実際には1レコードにその他項目があり、それらも取得します。)
<検索対象データ>
区分 年月   金額
-----------------------------
A   200412  600
A   200503  560
B   200311  600
B   200508  1000
B   200504  560
C   200508  400
C   200301  1100


<取得したいデータ>

区分 年月   金額
-----------------------------
A   200503  560
B   200508  1000
C   200508  400

よろしくお願いします。

Aベストアンサー

テーブル名をXXXとすると次のようなSQLでよいと思います。(最善の方法かどうかは自信がないですが)

select B.* from (select 区分, max(年月) as 年月 from XXX group by 区分) As A
inner join XXX as B on A.区分 = B.区分 and A.年月 = B.年月
order by B.区分

QSELECTで1件のみ取得するには?

こんにちわ。
いまORACLE9iを使用している者です。

ACCESSでは
SELECT TOP 1 項目名 FROM テーブル名
ORDER BY 項目名;
で並べ替えたデータ群のうち,先頭の1件だけを
取ることができますが,
ORACLEでそのような機能(SQL)はあるでしょうか?
教えてください。
よろしくお願いします。

Aベストアンサー

order by と rownum を併用する場合は注意が必要です。

[tbl01]
cola | colb
------------
1000 | aaaa
1001 | bbbb

というデータがある場合、
select cola from tbl01 where rownum < 1 order by cola desc;
とすると、「1001」ではなく、「1000」が返されます。
これは、order by の前に rownum < 1 が適用されてしまうからです。

解決するには、
select aaa from (select cola aaa from tbl01 order by cola desc) where rownum = 1;
とすれば良いです。

QMS SQLServer のSQLで文字列の前にN:

MS SQLServer のSQLで文字列の前にN: をつけることをよく見かけますが、
「N:」とはいったいどんな意味なのでしょうか?
教えて下さい。

Aベストアンサー

T-SQLでの話かと思いますが・・・。NCHAR/NVARCHAR型という、型(タイプ)があるのですが、これらは、夫々、national character/national character varying(SQL-92での表記法)の意味を持っています。夫々、固定長文字列(Unicode)/可変長文字列(Unicode)です。
NVARCHARはSQL-Server2000では4000文字まで、VARCHAR2は8000文字まで格納可です。(つまり、1/2になるということです)

さて、N'***' とT-SQL内で書くと、''内の文字をUnicodeで表現されたものとして処理する、という意味になります。Nは、nationalの略です。ですから、日本語を使おうとするとNは必須になる、という事ですね。

こんな感じでつかいます。#N'Unicode 文字列'

QSQLのVARCHARとVARCHAR2の違い

SQLについての質問です。
文字列型のVARCHARとVARCHAR2の違いについて教えてください。
まだ、初心者なのでなるべく分かりやすくお願いします。

Aベストアンサー

データベースによって、データ型の定義が違います。
私が知っている限りでは、
MS-SQLserverなどでは、可変長の文字列はvarcharですが、
Oracleでは、varchar2です。
他にも、MSのdatetimeに相当するものが、Oracleはdate型、という具合に名前が違います。
お使いのDBに沿ったデータ型の定義を調べると良いのではないでしょうか?
それぞれ違うと思いますよ。(似てると言えば似ているけど。)

QCSVファイルをBULK INSERTでSQLserverに読み込むことは可能?

BULK INSERT というものを使って
SQLServer2000上のテーブルに読込みたいのですが可能でしょうか?

その場合どうやって記述すればよいのでしょうか?
終端文字とかいうのは何になるのでしょう?

Windows2000
RDOで接続です。

Aベストアンサー

””で区切られたファイルのインポートですが、BULK INSERTでは、”を含んでロードしてしまいます。ですので、BULK INSERT を使用する場合は”を削除してからロードしないと駄目です。

ところで、<www7.big.or.jp/~pinball/discus/sqls/index.html>でも質問をしているようですが、どのような環境で何がしたいのか状況がつかめません。

詳しく教えていただけませんか?

Q型 varchar から型 numeric への変換エラー。

SQLクエリアナライザを使って、あるデータベースからLEFT JOINなどを駆使し、条件にそってデータを抽出しようと必死でやっております。
今まではうまく取得できていたのに、”型 varchar から型 numeric への変換エラー。”というエラーがでるようになりました。
前回とテーブルのデータを比較してみると、IsNULL(chrShokuhinCD,'') as chrShokuhinCDで引っ掛かっているようです。
この項目には空白(スペース)が入ったデータが最近存在しているのが原因だと思うのですが。。。
空白だったとき、IsNULL(chrShokuhinCD,'') as chrShokuhinCDはどのように修正すればよいでしょうか?教えてください。

Aベストアンサー

>空白だったとき、IsNULL(chrShokuhinCD,'') as chrShokuhinCDはどのように修正すればよいでしょうか?

では質問です。
空白だったとき、どんな数値として扱えばいいでしょうか?

これで何を入れればいいかわかると思いますが。

QSQLサーバから、項目の属性(型)を取得したいのですが・・・

SQLサーバからテーブルの項目名、属性(型)を取得するには、どのように
クエリを組めば良いのでしょうか?

Aベストアンサー

2つ前の質問に書いたのと一緒ですが。。
基本的にsys.objects, sys.columnsというシステムビューを使います。

select object_name(object_id),name,type_name(user_type_id) from sys.columns c
where object_id=object_id('テーブル名')

QBULK INSERTについて

CSVをバルクインサートでitemテーブルにBULK INSERTする際に、
下記のようなSQL文を使っているのですが、CSV内のブランク文字は
実行後にNULLになってしまいます。
やりたいことはNULLではなく空白文字("")にしたいのですが、
下記のSQL文をどのように変えればよいのでしょうか。
または、CSVを変更する方法でもよいです。

BULK INSERT item
FROM 'c:\test.txt'
WITH
(
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n'
);

大変お手数ですが、
わかる方がいらっしゃいましたらよろしくお願いいたします。

Aベストアンサー

http://msdn.microsoft.com/ja-jp/library/ms187887.aspx

あらかじめ、インサートする対象のフィールドにデフォルト値で空文字列を設定します。この状態でBULK INSERTを実行すれば空文字列が設定されます。

QCSV形式のファイルを読み込んでテーブルに格納するには?(BULK INSERT、BCP、DTS)

VisualBasicのカテゴリでも質問したのですが、
こちらの方が回答がつく可能性が高いのではと思い、こちらにも書き込みました。

今、
"aaa","bbb","ccc" 
のような形で1レコードのCSVファイルがあります。
これをSQLServer2000上のテーブルに読込みたいのですが、
10件ほどの少ないレコードなら
各フィールドごとを変数に入れて読込み、
それをループさせてINSERT INTO すればよいのですが・・・。

大量の件数の場合時間がかかりすぎてしまいます。
それで、BULK INSERT、BCP、DTS などの利用を考えているのですが、

まず、何よりこの質問です。

(1)このようなファイル形式のものを上記の方法で読込めるのか?

実現可能なのかをまずお聞きしたいです。
どなたか、成功されている方はいらっしゃいますか?

(2)BCPでファイルのフォーマットを指定したファイルを用意して試みたところ、
""で区切られているため、その部分もフィールドに取り込まれてしまい、
binaryデータが切り詰められましたとなってしまいます。
この回避方法はないでしょうか?

(3)""が余計なので、これを変換して読込むことは可能ですか?
DTSはVisualBasic上からコマンドとして利用したいです。
batファイルを用意してもいいです。

困っています。どなたか助けてください。

VisualBasicのカテゴリでも質問したのですが、
こちらの方が回答がつく可能性が高いのではと思い、こちらにも書き込みました。

今、
"aaa","bbb","ccc" 
のような形で1レコードのCSVファイルがあります。
これをSQLServer2000上のテーブルに読込みたいのですが、
10件ほどの少ないレコードなら
各フィールドごとを変数に入れて読込み、
それをループさせてINSERT INTO すればよいのですが・・・。

大量の件数の場合時間がかかりすぎてしまいます。
それで、BULK INSERT、BCP、DTS などの利用を...続きを読む

Aベストアンサー

DTSインポートエクスポートウィザードを使用すれば、”を含むCSVファイルでもよ見込むことが出来ますよ。
[スタート]-[プログラム]-[Microsoft SQL Server]-[データのインポートとエクスポート]から呼び出すことも出来ます。

変換元(データのコピー元)にCSVファイル(データソース:Text File)を選択して、変換先に接続するSQLServerとデータベース名を指定して・・・
順次設定していけば、設定できますよ。
#最後にちゃんと保存してくださいね。

話は変わりますが、最初の質問から派生して関連する質問をするのであれば、ちゃんと最初の質問を終了してから新規の質問を作成してください。感じ悪いです。回答している人の気持ちを考えてください。


人気Q&Aランキング