0

私が書いた SQL クエリに基づいてデータベース情報を csv に書き込むスクリプトがあります。DateTime私は最近、フィールドの日付が今年の 1 月 1 日よりも新しい行のみを返すようにクエリを変更する任務を負っていました。次のクエリは機能しません。

$startdate = "01/01/2013 00:00:00"

SELECT Ticket, Description, DateTime
FROM [table]
WHERE ((Select CONVERT (VARCHAR(10), DateTime,105) as [DD-MM-YYYY])>=(Select CONVERT (VARCHAR(10), $startdate,105) as [DD-MM-YYYY]))"

データベースの DateTime フィールドの形式は、$startdate 変数と同じ形式です。私は何を間違っていますか?クエリの形式が間違っていますか? ありがとう。

4

6 に答える 6

0

要件の解釈について、SQL についてと同じくらい多くを語っている興味深い質問です。来年になると、来年のチケットを選択したくなるでしょう。だからそうあるべきだ

SELECT  Ticket, Description, DateTime
FROM    [table]
WHERE   datePart(yy,DateTime)=datePart(yy,getDate())
于 2013-06-13T04:51:32.633 に答える
0
DECLARE @startdate datetime = '01/01/2013';
    SELECT Ticket, Description, DateTime
    FROM [table]
    WHERE DATEDIFF(DD,@startdate,DateTime) >= 0 
于 2013-06-13T04:56:30.283 に答える
0

DATEDIFFを介して年ベースのレコードを取得できます

DECLARE @startdate datetime = '01/01/2013';
    SELECT Ticket, Description, DateTime
    FROM [table]
    WHERE DATEDIFF(YEAR,@startdate,DateTime) = 0 //It gives 0 if years are the same and DateTime is your column
于 2013-06-12T23:08:26.410 に答える
0

次を使用して、現在の年の開始を取得できます。

DateAdd( year, Year( GetDate() ) - 1900, 0 )

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

select Ticket, Description, [DateTime]
  from [Table]
  where [DateTime] >= DateAdd( year, Year( GetDate() ) - 1900, 0 )

本当に 1 月最初の行が必要ない場合は、比較を から>=に変更し>ます。

于 2013-06-12T23:56:43.557 に答える