Hỏi kiểu dữ liệu ngày giờ trong SQL 2000

Thảo luận trong 'Lập trình & Đồ hoạ' bắt đầu bởi REALM, 7/8/10.

  1. REALM

    REALM Legend of Zelda

    Tham gia ngày:
    30/6/03
    Bài viết:
    970
    Nơi ở:
    HCM city
    Mình đang nhức đầu với kiểu dữ liệu này, insert bằng tay hoài ko được, bạn nào biết chỉ mình với nha.

    vd
    Mã:
    giả sử có 1 cái bảng sau
    create table sinhvien
    (
    msv varchar(5) not null,
    ...
    ngaysinh datatime null,
    constraint pk_sinhvien
    primary key(msv)
    )
    
    với như trên mình yêu cầu là nhập vô bảng đó dữ liệu dạng này
    1234 .... 16/02/1986

    vậy mình phải dùng câu lênh insert ra sau, để nhập vô cho đúng
     
  2. Bối Bối

    Bối Bối C O N T R A

    Tham gia ngày:
    20/2/06
    Bài viết:
    1,859
    Nơi ở:
    Ha Noi, Vietnam,
    sai ở đây : ngaysinh datatime null,
    sửa thành: ngaysinh datetime
    khi insert bằng câu lệnh sql thì datetime là chuỗi 'tháng/ngày/năm'
     
  3. REALM

    REALM Legend of Zelda

    Tham gia ngày:
    30/6/03
    Bài viết:
    970
    Nơi ở:
    HCM city
    thấy sai gì đâu mà phải bỏ null, với lại gõ ngày/thang/nam vô nó còn phần sau là 00:00:00 ---> cần bỏ cái này nè
     
  4. Bối Bối

    Bối Bối C O N T R A

    Tham gia ngày:
    20/2/06
    Bài viết:
    1,859
    Nơi ở:
    Ha Noi, Vietnam,
    bạn có hiểu null ở đó có ý nghĩa gì ko vậy ???
    kiểu dữ liệu datetime khi nhập vào thì nó tự thêm phần giờ/phút/giây vào, mình chỉ có thể format định dạng khi truy vấn dữ liệu để xem thôi. nghĩa là trong câu lệnh insert ko cần có phần đó, nhưng sau khi vào database nó tự thêm vào.

    với lại thấy bạn ghi là datatime nữa đó
     
    Chỉnh sửa cuối: 7/8/10
  5. Kogo

    Kogo Youtube Master Race

    Tham gia ngày:
    28/7/09
    Bài viết:
    18
    tại vì kiểu của ngày sinh là datetime nên khi bạn insert vào db nó sẽ tự thêm 00:00:00 nếu bạn chỉ insert date
    nếu muốn bỏ phần time thì:
    DECLARE @ngaysinh VARCHAR(8) = ''
    DECLARE @ns DATETIME
    SELECT
    @ns = ngaysinh
    FROM
    sinhvien
    WHERE
    msv = #msv
    SET @ngaysinh = CONVERT(VARCHAR(8), @ns, 112)
    bạn thử dùng varchar(8) xem, khi insert thi dung ISDATE() để validate, khi dùng đến thì convert tùy theo mục đích. trong thực tế cách này vẫn thường đc dùng.
     

Chia sẻ trang này