2

次の場合、月ごとにデータを検索する方法:

txtbox1.text = "m/y" または "06/2013"

txtbox2.text = "m/y" または "09/2013"

mysql クエリ コード:

SELECT * FROM tb_user WHERE dateregister ?.....

そして、テーブル内のレコードが次の場合:

id name dateregister

1 abc 05/05/2013

2ccc 2013/06/05

3 ddd 2013 年 1 月 6 日

4 ggg 2013/07/01

5 ttt 10/07/2013

6kkm 2013/08/20

7 おお 2013/01/09

そして、月「2013年6月」から「2013年9月」までのデータを取得したかっただけで、取得したデータは次のとおりです。

3 ddd 2013 年 1 月 6 日

4 ggg 2013/07/01

5 ttt 10/07/2013

6kkm 2013/08/20

7 おお 2013/01/09

さまざまなクエリを試しましたが、常に失敗します..

これは vb.net の私のコードです:

MySql.Data.MySqlClient をインポートします

Dim connString As String = "Database=dbuser;Data Source=localhost;User Id=root;Password="

Dim conn As New MySqlConnection(connString)

新しい MySqlDataAdapter として Dim アダプター

Dim ds As New DSReportPO

Dim cmd As MySqlCommand

monthx1= txtbox1.text

monthx2 = txtbox2.text

cmd = New MySqlCommand("SELECT * FROM tb_user WHERE dateregister?...", conn)

adapter.SelectCommand = cmd

adapter.Fill(ds.Tables(0))

Frm1.Show()

Frm1.ReportViewer1.ProcessingMode = Microsoft.Reporting.WinForms.ProcessingMode.Local

Frm1.ReportViewer1.LocalReport.ReportPath = System.Environment.CurrentDirectory & "\Report1.rdlc"

Frm1.ReportViewer1.LocalReport.DataSources.Clear()

Frm1.ReportViewer1.LocalReport.DataSources.Add(新しい Microsoft.Reporting.WinForms.ReportDataSource("DSPOListSETUP", ds.Tables(0)))

Frm1.ReportViewer1.DocumentMapCollapsed = True

Frm1.ReportViewer1.RefreshReport()

どうもありがとう

4

4 に答える 4

2

BETWEENキーワードを使用するだけです。

 SELECT * FROM tb_user 
 WHERE dateregister between @textBox1Value and @textBox2Value

解析する日付 (@textBox1Value および @textBox2Value) が適切に入力されていることを確認してください。

日付のフォーマットについては、このリンクを参照してください。

于 2013-09-17T06:13:27.447 に答える
1

TIME 部分を処理する効率的な方法は、次のようにコードを書き直すことです。

SELECT * FROM tb_user 
WHERE 
dateregister >= str_to_date(concat('01/',@textBox1Value ),'%d/%m/%Y') and 
dateregister < date_add(str_to_date(concat('01/',@textBox1Value ),'%d/%m/%Y'),interval 1 month) 
于 2013-09-17T06:26:06.370 に答える
1

使用BETWEENして範囲内の日付を検索DATE_FORMATし、VB 構文がわからないクエリで日付をフォーマットするために使用できます

  SELECT * FROM tb_user WHERE
  DATE_FORMAT(STR_TO_DATE(dateregister, '%d/%m/%Y'),'%m/%Y') 
  BETWEEN txtbox1.text AND  txtbox2.text

また

  SELECT * FROM tb_user WHERE
  DATE_FORMAT(STR_TO_DATE(dateregister, '%d/%m/%Y'),'%m/%Y') 
  BETWEEN '06/2013' AND  '09/2013'

このフィドルを試してください

Mysql 日付形式

于 2013-09-17T06:13:46.630 に答える