none
再請教一個日期的問題 RRS feed

  • 問題

  • 請問,要如何才能找出10天前的資料呢?我進貨日期的欄位是 "yyyy/MM/dd HH:mm"

    Dim SqlCommand As String = "Select * From 進貨資料 Where 進貨日期

    是要寫在上面Where的後面嗎?是的話要怎麼寫?

    2008年2月29日 下午 04:38

解答

  • 給妳 C# 的例子

    string today = DateTime.Now.ToString("yyyy/MM/dd");
    string tenDaysAgo = DateTime.ParseExact(today, "yyyy/MM/dd", null).AddDays(-10).ToString("yyyy/MM/dd");

    2008年3月1日 上午 04:20

所有回覆

  • 一般來說是給定一個範圍,有些人喜歡用 Between ,我喜歡直接用 Where 。

    Where (進貨日期>='2008/2/1' AND 進貨日期='2008/2/10')

    2008年2月29日 下午 05:59
    版主
  •  璉璉 寫信:

    一般來說是給定一個範圍,有些人喜歡用 Between ,我喜歡直接用 Where 。

    Where (進貨日期>='2008/2/1' AND 進貨日期='2008/2/10')

     

     

    那如果是想要10天以前的所有資料的話呢?

    例如:2月29日的話,想要把2月19日以前的資料(包含19日)

    的所有資料都找出來,而29日~20日之間的不用(還沒到10天)

    的話,條件要怎麼下呢?

    2008年3月1日 上午 02:41
  • 依法類推啊~

     

    進貨日期 <'2008/2/20'

     

    這樣就會包含 2008/2/19 23:59:59 以前的資料。

    2008年3月1日 上午 02:44
    版主
  • Dim SqlCommand As String = "Select * From 進貨資料 Where (進貨日期<='2008/2/20')"

     

    感謝唷,這樣是沒問題,因為我要做庫存天數,所以必須要先 Format(Now, "yyyy/MM/dd")

     

    得到現在的日期後再減掉10天,然後再把得到日期的變數(Time)放到 Where (進貨日期<='Time')"

     

    裡面,日期要怎麼相減?

    2008年3月1日 上午 03:02
  • < 是不包含 2008/2/20 00:00

     

    Format(Now ...) ? VB6 ? 請明確說明編譯器。

     

    一般來說會在程式這邊處理掉,避免使用資料庫特殊語法,以利資料庫的遷移

     

    DateAdd("d", Date, -10)

     

    Date, -10 的前後順序忘了,自己測一下。

     

    VB6 也可以直接使用 Format(Date - 10, "yyyy/MM/dd")

     

    之後用 & 連接,比如說:

    "Select ... Where (進貨資料<'" & Format(Date - 10, "yyyy/MM/dd") & "') ; "

     

    你問到的東西在線上手冊都有,不要把基本線上手冊查詢的東西都丟到版上來。

     

    比如說字串相加、時間函數。

    2008年3月1日 上午 03:14
    版主
  • sorry~我忘了說~我是用VB2005

    2008年3月1日 上午 04:17
  • 給妳 C# 的例子

    string today = DateTime.Now.ToString("yyyy/MM/dd");
    string tenDaysAgo = DateTime.ParseExact(today, "yyyy/MM/dd", null).AddDays(-10).ToString("yyyy/MM/dd");

    2008年3月1日 上午 04:20