datetime (Transact-SQL)

Bạn đang xem: sql tạo ngày mới

Trong bài viết này

Áp dụng cho: SQL Server (tất cả các phiên bản được hỗ trợ) Cơ sở dữ liệu Azure SQL Azure SQL Managed Instance Azure Synapse Analytics Hệ thống phân tích nền tảng (PDW)

Xác định ngày được kết hợp với thời gian trong ngày bằng giây phân số dựa trên đồng hồ 24 giờ.

Lưu ý

Sử dụng các loại dữ liệu time , date , datetime2 datetimeoffset cho công việc mới. Các kiểu này phù hợp với Tiêu chuẩn SQL. Chúng dễ di chuyển hơn. time , datetime2 datetimeoffset cung cấp độ chính xác nhiều giây hơn. datetimeoffset cung cấp hỗ trợ múi giờ cho các ứng dụng được triển khai trên toàn cầu.

Mô tả

Tài sản
Giá trị

Cú pháp
ngày giờ

Cách sử dụng
DECLARE @MyDatetime datetime

TẠO BẢNG Table1 (Column1 datetime )

Định dạng ký tự chuỗi mặc định

(được sử dụng cho máy khách cấp thấp)
Không áp dụng

Phạm vi ngày
Ngày 1 tháng 1 năm 1753 đến hết ngày 31 tháng 12 năm 9999

Phạm vi thời gian
00:00:00 đến 23: 59: 59.997

Khoảng lệch múi giờ
Không có

Phạm vi phần tử
YYYY là bốn chữ số từ 1753 đến 9999 đại diện cho một năm.

MM là hai chữ số, từ 01 đến 12, đại diện cho một tháng trong năm được chỉ định.

DD là hai chữ số, từ 01 đến 31 tùy thuộc vào tháng, đại diện cho một ngày của tháng được chỉ định.

hh là hai chữ số, nằm trong khoảng từ 00 đến 23, đại diện cho giờ.

mm là hai chữ số, từ 00 đến 59, đại diện cho phút.

ss là hai chữ số, nằm trong khoảng từ 00 đến 59, đại diện cho giây.
< br /> n * là 0 đến 3 chữ số, nằm trong khoảng từ 0 đến 999, đại diện cho giây phân số.

Độ dài ký tự
19 vị trí tối thiểu đến 23 vị trí tối đa

Kích thước lưu trữ
8 byte

Sự chính xác
Được làm tròn đến gia số .000, .003 hoặc .007 giây

Giá trị mặc định
1900-01-01 00:00:00

Lịch
Gregorian (Bao gồm toàn bộ phạm vi năm.)

Độ chính xác phân số giây do người dùng xác định
Không

Nhận biết và bảo tồn độ lệch múi giờ
Không

Nhận biết tiết kiệm ánh sáng ban ngày
Không

Các bảng sau liệt kê các định dạng ký tự chuỗi được hỗ trợ cho ngày giờ . Ngoại trừ ODBC, các ký tự chuỗi datetime nằm trong dấu ngoặc kép (‘), ví dụ:’ string_literaL ‘. Nếu môi trường không phải là us_english , chuỗi ký tự phải ở định dạng N’string_literaL ‘.

Số
Sự mô tả

Định dạng ngày:

[0] 4/15 / [19] 96 – (mdy)

[0] 4-15- [19] 96 – (mdy )

[0] 4,15. [19] 96 – (mdy)

[0] 4 / [19] 96/15 – (myd)

15 / [0] 4 / [19] 96 – (dmy)

15 / [19] 96 / [0] 4 – (dym)
< br /> [19] 96/15 / [0] 4 – (ydm)

[19] 96 / [0] 4/15 – (ymd)

Định dạng thời gian:

14:30

14:30 [: 20: 999]

14:30 [: 20.9]

4 giờ sáng

4 giờ chiều
Bạn có thể chỉ định dữ liệu ngày với tháng số được chỉ định. Ví dụ: 5/20/97 đại diện cho ngày thứ hai mươi của tháng 5 năm 1997. Khi bạn sử dụng định dạng ngày tháng, hãy chỉ định tháng, ngày và năm trong một chuỗi sử dụng dấu gạch chéo (/), dấu gạch ngang (-) hoặc dấu chấm ( .) làm dấu phân cách. Chuỗi này phải xuất hiện ở dạng sau:

dấu phân tách số [time] [time]

Khi ngôn ngữ được đặt thành us_english , thứ tự mặc định cho ngày là tháng. Bạn có thể thay đổi thứ tự ngày bằng cách sử dụng câu lệnh SET DATEFORMAT .

Cài đặt cho SET DATEFORMAT xác định cách các giá trị ngày được diễn giải. Nếu thứ tự không khớp với cài đặt, các giá trị không được hiểu là ngày tháng. Ngày không theo thứ tự có thể bị hiểu sai là nằm ngoài phạm vi hoặc với giá trị sai. Ví dụ: 12/10/08 có thể được hiểu là một trong sáu ngày, tùy thuộc vào cài đặt DATEFORMAT. Bốn phần năm được hiểu là năm.

Xem Thêm  Làm thế nào để lắc một hình ảnh - làm thế nào để làm cho một hình ảnh rung động

Theo thứ tự bảng chữ cái
Sự mô tả

Tháng 4 [il] [15] [,] 1996

Tháng 4 [il] 15 [,] [19] 96

Tháng 4 [il] 1996 [15]

[15] Tháng 4 [il] [,] 1996

15 Tháng 4 [il] [,] [19] 96

15 [19] 96 tháng 4 [il]

[15] Tháng 4 năm 1996 [il]

Tháng 4 năm 1996 [IL] [15]

1996 [15] Tháng 4 [IL]
Bạn có thể chỉ định dữ liệu ngày với một tháng được chỉ định làm tên đầy đủ của tháng. Ví dụ: tháng 4 hoặc tên viết tắt của tháng 4 được chỉ định trong ngôn ngữ hiện tại; dấu phẩy là tùy chọn và việc viết hoa bị bỏ qua.

Dưới đây là một số nguyên tắc để sử dụng định dạng ngày theo thứ tự bảng chữ cái:

1) Đặt dữ liệu ngày và giờ trong dấu ngoặc kép (‘). Đối với các ngôn ngữ không phải tiếng Anh, hãy sử dụng N ‘

2) Các ký tự được đặt trong dấu ngoặc là tùy chọn.

3) Nếu bạn chỉ xác định hai chữ số cuối cùng của năm, các giá trị nhỏ hơn hai chữ số cuối cùng của giá trị tùy chọn cấu hình Định cấu hình tùy chọn cấu hình máy chủ năm giới hạn hai chữ số có cùng thế kỷ với năm giới hạn. Các giá trị lớn hơn hoặc bằng giá trị của tùy chọn này thuộc thế kỷ trước năm giới hạn. Ví dụ: nếu giới hạn năm hai chữ số là 2050 (mặc định), 25 được hiểu là năm 2025 và 50 được hiểu là năm 1950. Để tránh sự mơ hồ, hãy sử dụng năm có bốn chữ số.

4) Nếu thiếu ngày, ngày đầu tiên của tháng sẽ được cung cấp.

Cài đặt phiên SET DATEFORMAT không được áp dụng khi bạn chỉ định tháng theo thứ tự bảng chữ cái hình thức.

ISO 8601
Sự mô tả

YYYY-MM-DDThh: mm: ss [.mmm]

YYYYMMDD [hh: mm: ss [.mmm]]
Ví dụ:

1) 2004-05-23T14: 25: 10

2) 2004-05-23T14: 25: 10.487

Để sử dụng định dạng ISO 8601, bạn phải chỉ định từng phần tử trong định dạng, bao gồm T , dấu hai chấm (:) và dấu chấm (.) được hiển thị trong định dạng.

Các dấu ngoặc cho biết rằng phần của thành phần thứ hai là tùy chọn. Thành phần thời gian được chỉ định ở định dạng 24 giờ.

Chữ T cho biết phần bắt đầu của phần thời gian của giá trị datetime .

lợi thế khi sử dụng định dạng ISO 8601 là nó là một tiêu chuẩn quốc tế với đặc điểm kỹ thuật rõ ràng. Ngoài ra, định dạng này không bị ảnh hưởng bởi cài đặt SET DATEFORMAT hoặc SET LANGUAGE .

Không tách biệt
Sự mô tả

YYYYMMDD hh: mm: ss [.mmm]

ODBC
Sự mô tả

{ts ‘1998-05-02 01: 23: 56.123’}

{d ‘1990-10-02’}

{t ’13: 33: 41′ }
API ODBC xác định trình tự thoát để đại diện cho các giá trị ngày và giờ, ODBC gọi dữ liệu dấu thời gian. Định dạng dấu thời gian ODBC này cũng được hỗ trợ bởi định nghĩa ngôn ngữ OLE DB (DBGUID-SQL) được hỗ trợ bởi nhà cung cấp Microsoft OLE DB cho SQL Server. Các ứng dụng sử dụng API dựa trên ADO, OLE DB và ODBC có thể sử dụng định dạng dấu thời gian ODBC này để biểu thị ngày và giờ.

Các chuỗi thoát dấu thời gian ODBC có định dạng: {mean_type ‘Constant_value’}:

– Lite_type chỉ định loại trình tự thoát. Dấu thời gian có ba chỉ định kiểu chữ:
1) d = chỉ ngày
2) t = chỉ thời gian
3) ts = dấu thời gian (thời gian + ngày)

Xem Thêm  Các chức năng và định dạng SQL Convert Date - chuyển đổi định dạng ngày sql

– ‘const_value’ là giá trị của chuỗi thoát. giá trị hằng phải tuân theo các định dạng này cho mỗi loại chữ.
d: yyyy-mm-dd
t: hh: mm: ss [.fff]
ts: yyyy-mm-dd hh: mm: ss [.fff]

Các giá trị

datetime được làm tròn đến gia số .000, .003 hoặc .007 giây, như được hiển thị trong bảng sau.

Giá trị do người dùng chỉ định
Hệ thống lưu trữ giá trị

01/01/98 23: 59: 59.999
1998-01-02 00: 00: 00.000

01/01/98 23: 59: 59,995

01/01/98 23: 59: 59,996

01/01/98 23: 59: 59,997

01/01/98 23: 59: 59,998
1998-01-01 23: 59: 59,997

01/01/98 23: 59: 59,992

01/01/98 23: 59: 59,993

01/01/98 23: 59: 59,994
1998-01-01 23: 59: 59,993

01/01/98 23: 59: 59.990

01/01/98 23: 59: 59.991
1998-01-01 23: 59: 59.990

Tuân thủ ANSI và ISO 8601

datetime không tuân thủ ANSI hoặc ISO 8601.

Khi bạn chuyển đổi sang kiểu dữ liệu ngày và giờ, SQL Server từ chối tất cả các giá trị mà nó không thể nhận dạng là ngày hoặc giờ. Để biết thông tin về cách sử dụng các hàm CAST và CONVERT với dữ liệu ngày và giờ, hãy xem CAST và CONVERT (Transact-SQL) .

Phần này mô tả điều gì xảy ra khi các loại dữ liệu ngày và giờ khác được chuyển đổi thành loại dữ liệu datetime .

Khi chuyển đổi từ ngày , năm, tháng và ngày sẽ được sao chép. Thành phần thời gian được đặt thành 00: 00: 00.000. Đoạn mã sau hiển thị kết quả chuyển đổi giá trị date thành giá trị datetime .

  KHAI BÁO @date date = '12 -21-16 ';
DECLARE @datetime datetime = @date;
  
CHỌN @datetime AS '@datetime', @date AS '@date';
  
--Kết quả
- @ datetime @date
------------------------- ----------
- 2016-12-21 00: 00: 00.000 2016-12-21
 

Lưu ý

Ví dụ trên sử dụng định dạng ngày cụ thể theo khu vực (MM-DD-YY).

  KHAI BÁO @date date = '12 -21-16 ';
 

Bạn có thể cập nhật ví dụ để phù hợp với định dạng cho khu vực của bạn.

Bạn cũng có thể hoàn thành ví dụ với định dạng ngày tuân thủ ISO 8601 (YYYY-MM-DD). Ví dụ:

  KHAI BÁO @date date = '2016-12-21';
DECLARE @datetime datetime = @date;

CHỌN @datetime AS '@datetime', @date AS '@date';
 

Khi chuyển đổi từ time (n) , thành phần thời gian được sao chép và thành phần ngày được đặt thành ‘1900-01-01’. Khi độ chính xác phân số của giá trị time (n) lớn hơn ba chữ số, giá trị sẽ bị cắt bớt cho vừa. Ví dụ sau đây cho thấy kết quả chuyển đổi giá trị time (4) thành giá trị datetime .

  KHAI BÁO @time time (4) = '12: 10: 05.1237 ';
KHAI BÁO @datetime datetime = @time;
  
CHỌN @datetime AS '@datetime', @time AS '@time';
  
--Kết quả
- @ datetime @time
------------------------- -------------
--1900-01-01 12: 10: 05.123 12: 10: 05.1237
 

Khi chuyển đổi từ smalldatetime , giờ và phút được sao chép. Giây và giây phân số được đặt thành 0. Đoạn mã sau hiển thị kết quả chuyển đổi giá trị smalldatetime thành giá trị datetime .

  KHAI BÁO @smalldatetime smalldatetime = '12 -01-16 12:32 ';
KHAI BÁO @datetime datetime = @smalldatetime;
  
CHỌN @datetime AS '@datetime', @smalldatetime AS '@smalldatetime';
  
--Kết quả
- @ datetime @smalldatetime
------------------------- -----------------------
--2016-12-01 12: 32: 00.000 2016-12-01 12:32:00
 

Khi chuyển đổi từ datetimeoffset (n) , các thành phần ngày và giờ được sao chép. Múi giờ bị cắt bớt. Khi độ chính xác phân số của giá trị datetimeoffset (n) lớn hơn ba chữ số, giá trị sẽ bị cắt bớt. Ví dụ sau đây cho thấy kết quả của việc chuyển đổi giá trị datetimeoffset (4) thành giá trị datetime .

  KHAI BÁO @datetimeoffset datetimeoffset (4) = '1968-10-23 12: 45: 37.1234 +10: 0';
KHAI BÁO @datetime datetime = @datetimeoffset;
  
CHỌN @datetime AS '@datetime', @datetimeoffset AS '@datetimeoffset';
  
--Kết quả
- @ datetime @datetimeoffset
------------------------- ------------------------- -----
--1968-10-23 12: 45: 37.123 1968-10-23 12: 45: 37.1237 +10: 0
 

Khi chuyển đổi từ datetime2 (n) , ngày và giờ sẽ được sao chép. Khi độ chính xác phân số của giá trị datetime2 (n) lớn hơn ba chữ số, giá trị sẽ bị cắt bớt. Ví dụ sau cho thấy kết quả chuyển đổi giá trị datetime2 (4) thành giá trị datetime .

  DECLARE @ datetime2 datetime2 (4) = '1968-10-23 12: 45: 37.1237';
KHAI BÁO @datetime datetime = @ datetime2;
  
CHỌN @datetime AS '@datetime', @ datetime2 AS '@ datetime2';
  
--Kết quả
- @ datetime @ datetime2
------------------------- ------------------------
--1968-10-23 12: 45: 37.123 1968-10-23 12: 45: 37.1237
 

Ví dụ

Ví dụ sau so sánh kết quả của việc truyền một chuỗi cho từng kiểu dữ liệu ngày giờ .

  CHỌN
     CAST ('2007-05-08 12:35:29. 1234567 +12: 15' AS time (7)) AS 'time'
    , CAST ('2007-05-08 12:35:29. 1234567 +12: 15' AS ngày) AS 'date'
    , CAST ('2007-05-08 12: 35: 29.123' AS smalldatetime) NHƯ
        'smalldatetime'
    , CAST ('2007-05-08 12: 35: 29.123' AS datetime) AS 'datetime'
    , CAST ('2007-05-08 12:35:29. 1234567 +12: 15' AS datetime2 (7)) AS
        'datetime2'
    , CAST ('2007-05-08 12: 35: 29.1234567 +12: 15' AS datetimeoffset (7)) AS
        'datetimeoffset';
 

Đây là tập hợp kết quả.

Xem Thêm  Làm tròn số trong JavaScript - làm tròn số bằng js

Loại dữ liệu
Đầu ra

thời gian
12:35:29. 1234567

ngày
2007-05-08

smalldatetime
2007-05-08 12:35:00

ngày giờ
2007-05-08 12: 35: 29.123

datetime2
2007-05-08 12:35:29. 1234567

datetimeoffset
2007-05-08 12: 35: 29.1234567 +12: 15

Xem thêm

ĐÚC và CHUYỂN ĐỔI (Giao dịch-SQL)


Xem thêm những thông tin liên quan đến chủ đề sql tạo ngày mới

SQL Server Day 1

  • Tác giả: SunEd IT Center
  • Ngày đăng: 2020-10-24
  • Đánh giá: 4 ⭐ ( 4067 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: SQL Server Day 1

INSERT trong SQL Server

  • Tác giả: comdy.vn
  • Đánh giá: 5 ⭐ ( 9334 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Tìm hiểu cách sử dụng câu lệnh INSERT trong SQL Server để thêm một hoặc nhiều bản ghi mới vào bảng.

Truy Vấn Ngày Tháng Trong Sql Server: Hàm Ngày Tháng Và Thời Gian

  • Tác giả: kiemvuongchimong.vn
  • Đánh giá: 5 ⭐ ( 7720 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Các dữ liệu khác có thể đơn giản, nhưng đối với kiểu ngày, giờ sẽ có nhiều khó khăn cho người mới dùng nó, Vì vậy cafedev chia sẻ cho ace một số kiến thức và kinh nghiệm khi làm việc với kiểu này

Lấy Ngày Tháng Năm Trong Sql Server: Hàm Ngày Tháng Và Thời Gian

  • Tác giả: nguthan.vn
  • Đánh giá: 5 ⭐ ( 5845 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Các dữ liệu khác có thể đơn giản, nhưng đối với kiểu ngày, giờ sẽ có nhiều khó khăn cho người mới dùng nó, Vì vậy cafedev chia sẻ cho ace một số kiến thức và kinh nghiệm khi làm việc với kiểu này

[Tự học SQL] Làm việc với kiểu ngày, giờ(Date) trong SQL

  • Tác giả: cafedev.vn
  • Đánh giá: 4 ⭐ ( 4612 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Các dữ liệu khác có thể đơn giản, nhưng đối với kiểu ngày, giờ sẽ có nhiều khó khăn cho người mới dùng nó. Vì vậy cafedev chia sẻ cho ace một số kiến thức và kinh nghiệm khi làm việc với kiểu này.

SQL Server: Hàm ngày tháng và thời gian

  • Tác giả: v1study.com
  • Đánh giá: 5 ⭐ ( 4936 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Các hàm ngày tháng được dùng để lấy thông tin về ngày, tháng cũng như năm. Các hàm này thường đi cùng với câu lệnh SELECT. DATEPART được hiểu là một phần

Câu lệnh tạo bảng mới từ bảng có sẵn

  • Tác giả: kienit.com
  • Đánh giá: 3 ⭐ ( 3214 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Câu lệnh SELECT INTO trong SQL dùng để sao chép các dữ liệu bảng cũ sang bảng mới. Nếu bảng mới đã tồn tại thì dùng mệnh đề INTO sẽ bị lỗi.

Xem thêm các bài viết khác thuộc chuyên mục: Kiến thức lập trình

By ads_php