Cách thêm cột ngày giờ trong SQL

Câu hỏi. Có thể sử dụng phiên bản SQL 2008 làm nhân chứng cho thiết lập sao chép cơ sở dữ liệu năm 2005 không? . câu trả lời của tôi sau. Có thể sử dụng phiên bản SQL 2008 làm nhân chứng cho thiết lập phản chiếu cơ sở dữ liệu năm 2005 không?

Đăng nhập hoặc đăng ký để đánh giá

2009-02-23

1,567 lượt đọc

    Phát biểu tại các sự kiện cộng đồng - More Thoughts

    • của Andy Warren
    • SQLServerCentral. com
    • Blog

    Tuần trước, tôi đã đăng Bài phát biểu tại các sự kiện cộng đồng - Đã đến lúc nâng cao tiêu chuẩn?, lần đầu tiên nói về mức độ chúng ta nên yêu cầu kinh nghiệm đối với các diễn giả tại các sự kiện như SQLSaturday cũng như khi nào có thể thích hợp để thêm trọng tâm/giới hạn bổ sung vào . Tôi đã có thêm một vài suy nghĩ về chủ đề này trong tuần này và tôi mong nhận được ý kiến ​​​​của bạn

    Cơ sở dữ liệu của chúng tôi có một bảng tên là

    2019-02-08 11:13:12.111000
    
    6 với dữ liệu trong các cột
    2019-02-08 11:13:12.111000
    
    7,
    2019-02-08 11:13:12.111000
    
    8 và
    2019-02-08 11:13:12.111000
    
    9

    chuyến bayaircraftarrival_datetimeEK10L12012019-04-20 15. 15. 00AY12K20012019-03-31 20. 10. 00LA105F2052019-08-03 11. 15. 00LH30K2562019-07-01 12. 47. 00

    Đối với mỗi chuyến bay, hãy lấy mã chuyến bay, mã máy bay và ngày giờ đến mới. Để tính toán

    YYYY-MM-DD HH:MM:SS
    
    0, chúng tôi sẽ thêm 2 giờ 10 phút vào thời gian hiện tại cho mỗi lần đến – đó là số lượng các chuyến bay này đã bị hoãn

    Dung dịch

    Chúng ta sẽ sử dụng hàm

    YYYY-MM-DD HH:MM:SS
    
    1. Đây là truy vấn bạn sẽ viết

    SELECT flight,
           aircraft,
           ADDTIME[arrival_datetime, ‘2:10’] 
             AS new_arrival_datetime
    FROM flight_schedule;
    

    Đây là kết quả của truy vấn

    chuyến baymáy baynew_arrival_datetimeEK10L12012019-04-20 17. 25. 00AY12K20012019-03-31 22. 20. 00LA105F2052019-08-03 13. 25. 00LH30K2562019-07-01 14. 57. 00

    Thảo luận

    Sử dụng hàm ADDTIME[] nếu bạn muốn chọn một ngày giờ mới bằng cách thêm thời gian nhất định vào giá trị ngày giờ/dấu thời gian/thời gian

    Hàm này nhận hai đối số. Đối số đầu tiên là ngày giờ/thời gian mà chúng tôi đang thêm thời gian; . Trong ví dụ của chúng tôi, chúng tôi sử dụng cột

    2019-02-08 11:13:12.111000
    
    9, thuộc loại dữ liệu ngày giờ

    Đối số thứ hai là một chuỗi chứa lượng thời gian để thêm vào đối số đầu tiên [trong ví dụ của chúng tôi, '2. 10’, hay 2 giờ 10 phút]

    Bạn cũng có thể thêm phân số giây và thậm chí cả ngày vào giá trị ngày giờ/thời gian. Truy vấn bên dưới thêm 3 ngày, 1 giờ, 1 phút, 1 giây và 111 giây phân số vào ngày và giờ

    SELECT ADDTIME['2019-02-05 10:12:11', '3 1:1:1.111']; 
    

    Nó trở lại

    2019-02-08 11:13:12.111000
    

    ADDTIME[] trả về một chuỗi với thời gian mới. Trong ví dụ của chúng tôi, thời gian đến mới cho chuyến bay 'EK10' là '2019-04-20 17. 25. 00’ – hai giờ mười phút sau ngày giờ ban đầu của nó

    Các giá trị NGÀY và GIỜ trong PostgreSQL có toàn bộ các hàm và toán tử đặc biệt để sử dụng đúng cách. Rất nhiều truy vấn xử lý thông tin NGÀY và GIỜ nên điều quan trọng là phải biết các công cụ ngày. Dưới đây chúng tôi sẽ giới thiệu và thực hành các chức năng chính mà bạn có thể sẽ cần. Nếu bạn muốn biết chi tiết, bạn có thể xem danh sách đầy đủ các hàm PostgreSQL tại đây

    NGÀY/GIỜ Kiểu dữ liệu

    Có 4 cách chính để lưu trữ giá trị ngày trong cơ sở dữ liệu PostgreSQL

    Loại dữ liệuMô tảVí dụĐầu raDẤU THỜI GIANngày và giờ
    YYYY-MM-DD HH:MM:SS
    
    32021-08-09T13. 57. 40DATEngày [không có thời gian]
    YYYY-MM-DD HH:MM:SS
    
    42021-08-09TIMEthời gian [không có ngày]
    YYYY-MM-DD HH:MM:SS
    
    513. 57. 40INTERVALkhoảng thời gian giữa hai ngày/thời gian
    YYYY-MM-DD HH:MM:SS
    
    61 ngày, 2. 00. 10

    Chúng ta sẽ đi qua nhiều hơn về mỗi trong số này

    Định dạng chuỗi ngày

    Ngày trong cơ sở dữ liệu không được lưu trữ dưới dạng chuỗi, nhưng chúng tôi nhập và tìm nạp dữ liệu từ cơ sở dữ liệu đó như thể đó là một chuỗi có định dạng thông tin sau

    YYYY-MM-DD HH:MM:SS
    

    trong đó các chữ cái viết tắt cho Năm, Tháng, Ngày, Giờ, Phút và Giây. Ví dụ: giả sử chúng tôi muốn ghi lại rằng chúng tôi có một người dùng mới vào ngày 09 tháng 8 năm 2021 vào đúng 13 giờ. 57. Để thể hiện ngày và giờ chính xác đó, chúng tôi sẽ sử dụng định dạng

    YYYY-MM-DD HH:MM:SS
    
    7

    LÀM. định dạng này cũng được hỗ trợ. Tháng Một 8 04. 05. 06 1999 PST

    Để làm quen, hãy thử tạo và CHỌN một vài DẤU THỜI GIAN bên dưới. Tôi sinh ngày 1 tháng 5 năm 1983 đúng 4. 00 giờ sáng. Bạn có thể tìm nạp dấu thời gian đó không?

    Chúng ta sẽ nhảy vào đây. Chúng tôi cần sử dụng một bảng khác vì không có bảng nào trước đây chúng tôi đang sử dụng có các trường ngày trong đó. Một bảng khác có sẵn cho chúng tôi trong chinook là nhân viên. Hãy làm quen với các cột trong bảng này bằng cách nhìn vào một vài hàng đầu tiên. Lưu ý rằng có một số cột nên bạn có thể phải cuộn sang phải để xem tất cả dữ liệu

    Mỗi nhân viên có hai cột DẤU THỜI GIAN, một cột dành cho ngày sinh của họ và một cột dành cho ngày thuê của họ. Bạn cũng có thể sử dụng tất cả các hàm ĐẶT HÀNG, NHÓM và các hàm khác mà chúng ta đã học cho các cột khác trên cột NGÀY. Thử lấy danh sách 4 nhân viên trẻ nhất công ty

    Định dạng ngày thành chuỗi

    Thường thì bạn không muốn hiển thị DẤU THỜI GIAN thô đầy đủ mà thay vào đó là một phiên bản được định dạng độc đáo, có khả năng bị cắt bớt. Ví dụ: giả sử chúng ta muốn lấy danh sách tên nhân viên và năm họ được tuyển dụng. Để làm như vậy, chúng tôi sẽ cần phân tích cú pháp đã thuê_date để rút ra năm. Chúng ta có thể làm như vậy với hàm TO_CHAR hoạt động như sau

    TO_CHAR[[date type], [pattern]]
    

    trong đó [loại ngày] là một cột hoặc giá trị của bất kỳ loại dữ liệu ngày/giờ nào được liệt kê ở trên và [mẫu] là một chuỗi cho biết cách định dạng ngày đầu ra. Các ký hiệu chính mà bạn sẽ muốn sử dụng để tạo các mẫu định dạng của mình có ở đây

    Mô hình Mô tả Ví dụ Đầu raHHHGiờ [01-12]
    YYYY-MM-DD HH:MM:SS
    
    804HH24Giờ [01-24]
    YYYY-MM-DD HH:MM:SS
    
    916MIMinute
    TO_CHAR[[date type], [pattern]]
    
    015SSSeconds
    TO_CHAR[[date type], [pattern]]
    
    123amhiển thị thời gian là sáng hay chiều
    TO_CHAR[[date type], [pattern]]
    
    2amYY2 chữ số cuối cùng của Năm
    TO_CHAR[[date type], [pattern]]
    
    321YYYY4 chữ số của Năm
    TO_CHAR[[date type], [pattern]]
    
    32021MMMonth # của năm.
    TO_CHAR[[date type], [pattern]]
    
    508Tháng viết hoa Tháng trong năm
    TO_CHAR[[date type], [pattern]]
    
    6AugustMon viết tắt của Tháng trong năm
    TO_CHAR[[date type], [pattern]]
    
    7AugDDDay # của tháng
    TO_CHAR[[date type], [pattern]]
    
    809Dayviết tắt Ngày trong tuần
    TO_CHAR[[date type], [pattern]]
    
    9MondayDyviết tắt Ngày trong tuần
    SELECT ADDTIME['2019-02-05 10:12:11', '3 1:1:1.111']; 
    
    50MonWWWeek # của năm
    SELECT ADDTIME['2019-02-05 10:12:11', '3 1:1:1.111']; 
    
    5132QQuý của năm
    SELECT ADDTIME['2019-02-05 10:12:11', '3 1:1:1.111']; 
    
    523TZTimeZone
    SELECT ADDTIME['2019-02-05 10:12:11', '3 1:1:1.111']; 
    
    53UTC

    Các mẫu trên có thể được xâu chuỗi lại với nhau để có định dạng cuối cùng bạn muốn. Một số đầu ra phổ biến là

    Bạn không cần phải ghi nhớ những điều này [thật khó để. ]. Thật tốt khi làm quen với cách thức hoạt động của nó và sau đó tham khảo lại khi bạn cần trong tương lai

    định dạng số

    Có một số công cụ bổ sung mà bạn có thể sử dụng trên các mẫu xuất số

    FormatterDescriptionExampleOutputFMFill Mode sẽ xóa mọi số 0
    ở phía trước của một số có 2 chữ số.
    SELECT ADDTIME['2019-02-05 10:12:11', '3 1:1:1.111']; 
    
    545tha thêm các hậu tố thứ tự
    như st, nd hoặc th vào cuối một số
    SELECT ADDTIME['2019-02-05 10:12:11', '3 1:1:1.111']; 
    
    5405th

    Và tất nhiên bạn có thể kết hợp cả hai để có được

    Định dạng chuỗi

    Đối với đầu ra chuỗi, hầu hết các mẫu ở trên đều hỗ trợ đầu ra cách viết hoa khác nhau dựa trên trường hợp bạn sử dụng cho mẫu. Một số ví dụ sử dụng cách viết hoa khác nhau của “Ngày”

    Và bạn có thể thấy định dạng ngày phổ biến sau ở định dạng CHỮ HOA, Chữ hoa và chữ thường

    Lưu ý rằng trường hợp cho các giá trị số không thay đổi. Vẫn sử dụng DD cho ngày # của tháng và YYYY cho năm

    Chúng ta sẽ tiếp tục trong phần hướng dẫn nhưng nếu bạn muốn biết thêm chi tiết, hãy xem danh sách đầy đủ các hàm định dạng ngày của PostgreSQL

    Hàm NGÀY và GIỜ hiện tại

    PostgreSQL hỗ trợ một số giá trị hoặc hàm đặc biệt giúp đặt cược NGÀY, DẤU THỜI GIAN hoặc GIỜ hiện tại. Những cái được sử dụng nhiều nhất là

    SELECT ADDTIME['2019-02-05 10:12:11', '3 1:1:1.111']; 
    
    5

    và chúng được sử dụng bằng cách đặt chúng vào truy vấn

    NHÓM THEO NGÀY

    Trong các truy vấn phân tích, việc nhóm các thứ theo ngày là rất phổ biến. Ví dụ: bạn có thể muốn xem người dùng mới theo năm, tháng, tuần hoặc ngày. Để làm như vậy, bạn sẽ muốn sử dụng hàm TO_CHAR để chuyển đổi ngày tháng thành một chuỗi bị cắt bớt trước khi NHÓM THEO nó. Bạn không muốn chỉ NHÓM THEO ngày thô vì chúng chính xác đến từng mili giây nên việc nhóm theo ngày không thay đổi sẽ giống như tạo NHÓM cho mỗi mili giây

    Các ví dụ sau đang sử dụng trường ngày thuê từ bảng nhân viên và hiển thị nhiều định dạng phổ biến mà bạn có thể sử dụng cho các nhóm này. Đây là những gì chúng tôi sử dụng tại Chartio cho các tiêu chuẩn định dạng nhóm ngày của chúng tôi

    Giai đoạn nhómExample SQLExample OutputSecond
    SELECT ADDTIME['2019-02-05 10:12:11', '3 1:1:1.111']; 
    
    562018-03-04T00. 00. 00Minute
    SELECT ADDTIME['2019-02-05 10:12:11', '3 1:1:1.111']; 
    
    572018-08-14T00. 00Giờ
    SELECT ADDTIME['2019-02-05 10:12:11', '3 1:1:1.111']; 
    
    582018-01-02T00Ngày
    SELECT ADDTIME['2019-02-05 10:12:11', '3 1:1:1.111']; 
    
    592003-10-17Tuần
    YYYY-MM-DD HH:MM:SS
    
    302002-W33Tháng
    YYYY-MM-DD HH:MM:SS
    
    312002-05Quý
    YYYY-MM-DD HH:MM:SS
    
    322003-Q2Năm
    YYYY-MM-DD HH:MM:SS
    
    33Y2012Giờ trong Ngày
    YYYY-MM-DD HH:MM:SS
    
    3414Ngày trong tuần________Tháng 335Năm_____Thứ nămNgày của tháng3_____1Ngày7của tháng 10 ___3___3___3

    Vui lòng thử bất kỳ định dạng nào ở trên đối với truy vấn bên dưới

    Chỉ có 8 nhân viên trong cơ sở dữ liệu của chúng tôi nên chúng tôi không xử lý quá nhiều nhóm ở đó. Bạn có thể tìm hiểu chi tiết hơn một chút với bảng hóa đơn và đó là cột ngày_hóa đơn có 250 hàng

    Truy vấn trên trả về số hóa đơn được tạo mỗi năm. Bạn có thể sửa đổi nó để nhận SUM của tổng số tiền được lập hóa đơn theo tháng không?

    Làm cách nào để tạo cột ngày và giờ trong SQL?

    SQL Server đi kèm với các kiểu dữ liệu sau để lưu trữ ngày hoặc giá trị ngày/giờ trong cơ sở dữ liệu. .
    NGÀY - định dạng YYYY-MM-DD
    DATETIME - định dạng. YYYY-MM-DD HH. MI. SS
    SMALLDATETIME - định dạng. YYYY-MM-DD HH. MI. SS
    DẤU THỜI GIAN - định dạng. một số duy nhất

    Làm cách nào để chèn ngày vào cột ngày giờ trong SQL?

    Luôn sử dụng định dạng chuỗi ký tự mặc định của ANSI cho ngày thứ i. e. YYYY-MM-DD như bên dưới. CHÈN VÀO NHÂN VIÊN [EMPID, FULLNAME, DESIGNATION, JOINING, SAL, DEPTNAME] GIÁ TRỊ[8976, 'JOHN', 'JOE', 'ANALYST', '1990-12-12', 30000, 'Analytics']; . e. MySQL, PostgreSQL, Máy chủ SQL.

    Làm cách nào tôi có thể tính tổng ngày và giờ trong SQL?

    Bạn không thể tính tổng thời gian. Thay vào đó, điều bạn nên làm là sử dụng hàm DateDiff với thời gian bắt đầu và kết thúc bằng tham số giây . Điều này sẽ trả về một kiểu dữ liệu số nguyên mà bạn có thể SUM trên. Khi bạn hoàn tất, hãy chuyển đổi nó thành DateTime để định dạng nó như giờ. phút. giây.

    Làm cách nào để thêm ngày trong truy vấn SQL?

    Hàm DATEADD[] thêm khoảng thời gian/ngày vào một ngày và sau đó trả về ngày

    Chủ Đề