kzen.dev
  • Pertanyaan
  • Tag
  • Pengguna
Notifikasi
Imbalan
Registrasi
Setelah Anda mendaftar, Anda akan diberitahu tentang balasan dan komentar untuk pertanyaan Anda.
Gabung
Jika Anda sudah memiliki akun, masuk untuk memeriksa pemberitahuan baru.
Akan ada hadiah untuk pertanyaan, jawaban, dan komentar tambahan.
Lebih
Sumber
Sunting
 user1074474
user1074474
Question

Kueri DateTime hanya pada tahun di SQL Server

Saya ingin memilih beberapa catatan berdasarkan tahun yang cocok, misalnya di tab tabel di mana kolom-kolomnya adalah [id] int, [nama] varchar, [tahun buku] datetime

Saya ingin memilih semua catatan yang tahunnya adalah 2009.

Kueri berikut memberikan hasil 0:

    SELECT [ACCNO]
      ,[Roll No]
      ,[IssueDate]
      ,[DueDate]
  FROM [test1].[dbo].[IssueHis$] 
  where [IssueDate]  between 12-12-2004 and 1-01-2010
8 2011-12-28T10:24:35+00:00 3
 palacsint
palacsint
Pertanyaan edit 28 Desember 2011 в 10:58
Pemrograman
sql
datetime
sql-server
sql-server-2008
Pertanyaan ini memiliki :value jawaban dalam bahasa Inggris, untuk membacanya masuk ke akun Anda.
Solution / Answer
 dotnetstep
dotnetstep
28 Desember 2011 в 10:29
2011-12-28T10:29:32+00:00
Lebih
Sumber
Sunting
#15063283
select id,name,bookyear from tab1 where year(bookyear) = 2009
26
0
Mikael Eriksson
Mikael Eriksson
28 Desember 2011 в 10:34
2011-12-28T10:34:01+00:00
Lebih
Sumber
Sunting
#15063284
SELECT [ACCNO]
    ,[Roll No]
    ,[IssueDate]
    ,[DueDate]
FROM [test1].[dbo].[IssueHis$] 
WHERE [IssueDate] >= '20090101' AND
      [IssueDate] < '20100101'
4
0
 gbn
gbn
28 Desember 2011 в 10:39
2011-12-28T10:39:59+00:00
Lebih
Sumber
Sunting
#15063285
  1. Anda perlu membatasi konstanta datetime seperti yang Anda lakukan pada string
  2. Gunakan pola yyyymmdd untuk SQL Server (bukan yyyy-mm-dd, secara umum tidak aman)
  3. Gunakan kueri rentang yang tepat untuk mengizinkan nilai waktu

Jadi, untuk menemukan nilai antara "12 Desember 2004" dan "31 Desember 2009" inklusif , yang memungkinkan untuk waktu:

...
where [IssueDate] >= '20041212' AND [IssueDate] < '20100101'

Sunting, atau ini, karena ambiguitas dalam pertanyaan untuk "tahun = 2009"

...
where [IssueDate] >= '20090101' AND [IssueDate] < '20100101'
 gbn
gbn
Jawaban edit 28 Desember 2011 в 10:55
4
0
Tambahkan pertanyaan
Kategori
Semua
Teknologi
Budaya / Rekreasi
Kehidupan / Seni
Ilmu Pengetahuan
Profesional
Bisnis
Pengguna
Semua
Baru
Populer
1
Daniel Gogov
Terdaftar 2 hari yang lalu
2
工藤 芳則
Terdaftar 1 minggu yang lalu
3
Ирина Беляева
Terdaftar 1 minggu yang lalu
4
Darya Arsenyeva
Terdaftar 2 minggu yang lalu
5
anyta nuam-nuam (LapuSiK)
Terdaftar 2 minggu yang lalu
ID
JA
© kzen.dev 2023
Sumber
stackoverflow.com
di bawah lisensi cc by-sa 3.0 dengan atribusi