6

例(このようには機能しません):

SELECT * FROM User 
WHERE LastActivity > Date(1980,1,1)

Dateは、パラメータyear、month、dayを整数として使用する必要があります。ロケールの問題を回避するために、「yyyy / mm/dd」などの文字列を明示的に使用したくありません。

これが重要な場合は、MSSQLデータベースでMicrosoft SQL ServerManagementStudioを使用しています。

注:これは些細なことだと思いますが、googleとSOのどちらを使用しても解決策を見つけることができませんでした。

4

4 に答える 4

7

ロケールの問題を回避するために、「yyyy / mm/dd」などの文字列を明示的に使用したくありません。

これを回避するための最良の方法は、日付を言語に依存しないとして渡すことですYYYYMMDD。このようにして、言語に依存しなくなります。

SELECT * FROM User 
WHERE LastActivity > '19800101';
于 2012-12-11T13:44:57.747 に答える
2

ISO date formatどちらを使用するかyyyymmdd

SELECT * FROM User 
WHERE LastActivity > CONVERT(DATE, (CONVERT(VARCHAR(4), @Year) + 
                                    RIGHT('0' + CONVERT(VARCHAR(2), @Month),2) + 
                                    RIGHT('0' + CONVERT(VARCHAR(2), @Date),2) ))
于 2012-12-11T13:48:45.597 に答える
0

ほとんどのデータベースは日付パラメータとして「dd-mmm-yyyy」を受け入れることが常にわかっており、ほとんどすべての場所で使用しています。そうしない人もいますが(MS / Accessなど)、SQL/Serverはそうします。この形式は広く受け入れられていますが、明らかに言語固有にする必要があるかもしれません。

SELECT * FROM User WHERE LastActivity > '11-Dec-2012';
于 2012-12-11T15:05:14.330 に答える
0

「変換」機能はあなたが探していることをするのだと思います。1980年3月20日を作成するには、次のようにします。

Convert(date, '1980-03-20')

正確なクエリは次のようになります。

SELECT * FROM User 
WHERE LastActivity > Convert(date, '1980-01-01')

SQL Server 2012以降を使用している場合は、より単純なDATEFROMPARTS関数を使用できます。

SELECT * FROM User 
WHERE LastActivity > DATEFROMPARTS(1980,01,01)
于 2014-03-10T13:10:33.160 に答える