Pertanyaan SQL DataType - Bagaimana cara menyimpan setahun?


Saya perlu memasukkan satu tahun (misalnya: 1988, 1990 dll) dalam database. Ketika saya menggunakan Date atau Datetime tipe data, itu menunjukkan kesalahan. Datatype mana yang harus saya gunakan.


34
2018-03-30 09:03


asal


Jawaban:


Jika Anda perlu menyimpan satu tahun dalam database, Anda mungkin ingin menggunakan datatype Integer (jika Anda mati pada hanya menyimpan tahun) atau datatype DateTime (yang akan melibatkan menyimpan tanggal yang pada dasarnya adalah 1/1 / 1990 00:00:00 dalam format).


26
2018-03-30 09:06



regular 4 byte INT adalah cara untuk menjadi besar, adalah pemborosan ruang! 

Anda tidak mengatakan database apa yang Anda gunakan, jadi saya tidak dapat merekomendasikan jenis data tertentu. Semua orang mengatakan "menggunakan integer", tetapi kebanyakan database menyimpan bilangan bulat pada 4 byte, yang jauh lebih dari yang Anda butuhkan. Anda harus menggunakan dua bilangan bulat byte (smallint pada SQL Server), yang akan menghemat ruang lebih baik.


27
2018-03-30 16:17



Hei, kamu bisa Gunakan tahun() datatype di MySQL Ini tersedia dalam format dua digit atau empat digit.

Catatan: Nilai yang diizinkan dalam format empat digit: 1901 hingga 2155. Nilai diizinkan dalam format dua digit: 70 hingga 69, mewakili tahun dari 1970 hingga 2069


9
2018-03-23 06:53



Menyimpan "Tahun" dalam MSSQL idealnya bergantung pada apa yang Anda lakukan dengannya dan apa arti "tahun" itu bagi aplikasi dan basis data Anda. Itu dikatakan ada beberapa hal yang perlu disebutkan di sini. Tidak ada "DataType" untuk Tahun 2012 di MSSQL. Saya akan bersandar menggunakan SMALLINT karena hanya 2 byte (menghemat 2 dari 4 byte yang menjadi tuntutan INT). Keterbatasan Anda adalah bahwa Anda tidak dapat memiliki satu tahun lebih tua dari 32767 (seperti dari SQL Server 2008R2). Saya benar-benar tidak berpikir SQL akan menjadi database pilihan sepuluh ribu tahun dari sekarang apalagi 32767. Anda dapat mempertimbangkan INT sebagai the Year () fungsi di MSSQL tidak mengkonversi tipe data "DATE" ke INT. Seperti saya katakan, itu tergantung di mana Anda mendapatkan data dan kemana ia pergi, tetapi SMALLINT seharusnya baik-baik saja. INT akan berlebihan ... kecuali Anda memiliki alasan lain seperti yang saya sebutkan di atas atau jika persyaratan kode membutuhkannya dalam bentuk INT (misalnya mengintegrasikan dengan aplikasi yang sudah ada). Kemungkinan besar SMALLINT seharusnya baik-baik saja.


2
2018-02-07 14:49



Hanya setahun, tidak ada yang lain? Mengapa tidak menggunakan bilangan bulat sederhana?


1
2018-03-30 09:06



Gunakan bilangan bulat jika yang Anda butuhkan untuk menyimpan adalah tahun. Anda juga dapat menggunakan datetime jika Anda berpikir akan ada perhitungan berdasarkan tanggal ketika query kolom ini


1
2018-03-30 09:06



Penyimpanan mungkin hanya sebagian dari masalah. Bagaimana nilai ini akan digunakan dalam kueri?

Apakah akan dibandingkan dengan tipe data tanggal-waktu lainnya, atau semua baris yang terkait juga memiliki nilai numerik?

Bagaimana Anda akan menghadapi perubahan persyaratan? Seberapa mudah Anda bereaksi terhadap permintaan untuk mengganti tahun dengan potongan waktu yang lebih kecil? Apakah sekarang mereka ingin itu dirinci oleh perempat?

Tipe numerik dapat dengan mudah digunakan dalam kueri waktu tanggal dengan memiliki tabel pencarian untuk bergabung dengan berisi hal-hal seperti tanggal mulai dan berhenti (1/1 / X hingga 12/31 / x), dll.


0
2017-10-10 16:33