Khi tôi chọn ngày trong SQL, nó được trả về là 2011-02-25 21:17:33.933
. Nhưng tôi chỉ cần phần Ngày, đó là 2011-02-25
. Tôi có thể làm cái này như thế nào?
Khi tôi chọn ngày trong SQL, nó được trả về là 2011-02-25 21:17:33.933
. Nhưng tôi chỉ cần phần Ngày, đó là 2011-02-25
. Tôi có thể làm cái này như thế nào?
Câu trả lời:
Tôi đoán anh ấy muốn một chuỗi.
select convert(varchar(10), '2011-02-25 21:17:33.933', 120)
120 ở đây cho biết chức năng chuyển đổi mà chúng ta vượt qua ngày đầu vào theo định dạng sau : yyyy-mm-dd hh:mi:ss
.
Đối với SQL Server 2008:
Convert(date, getdate())
Vui lòng tham khảo https://docs.microsoft.com/en-us/sql/t-sql/fifts/getdate-transact-sql
DATE
là mới trong năm 2008
date
dữ liệu do đó khiến giải pháp này không hợp lệ.
Nhanh nhất là datediff
, vd
select dateadd(d, datediff(d,0, [datecolumn]), 0), other..
from tbl
Nhưng nếu bạn chỉ cần sử dụng giá trị, thì bạn có thể bỏ qua bảng dữ liệu, vd
select ...
WHERE somedate <= datediff(d, 0, getdate())
trong đó biểu thức datediff(d, 0, getdate())
là đủ để trả về ngày hôm nay mà không có phần thời gian.
Sử dụng CAST (GETDATE () là ngày) làm việc cho tôi, đơn giản.
CAST(order_date AS DATE)
CAST(
FLOOR(
CAST( GETDATE() AS FLOAT )
)
AS DATETIME
)
Đối với phiên bản cũ hơn 2008 :
SELECT DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE()), 0)
Hơi muộn một chút, nhưng hãy sử dụng chức năng "curdate" của ODBC (góc lợ 'fn' là chuỗi thoát hàm ODBC).
SELECT {fn curdate()}
Đầu ra: 2013-02-01
SELECT {fn curdate()} FROM (SELECT 1) AS T(X)
và xem xét kế hoạch thực hiện thực tế (phiên bản xml), bạn sẽ thấy những gì thực sự được thực hiện là CONVERT(varchar(10),getdate(),23)
. Vì vậy, kiểu dữ liệu của hàm ODBC này varchar(10)
có nghĩa là nếu bạn muốn so sánh kết quả với một kết quả, datetime
bạn sẽ nhận được một chuyển đổi ngầm định từ varchar(10)
sang datetime
trên một chuỗi yyyy-mm-dd
. Chuyển đổi ngầm đó sẽ thất bại với set dateformat dmy
.
Trong trường hợp nếu bạn cần thời gian để trở thành số không như 2018-01-17 00:00:00.000
:
SELECT CONVERT(DATETIME, CONVERT(DATE, GETDATE()), 121)
Sử dụng rất đơn giản:
convert(date, Btch_Time)
Ví dụ dưới đây:
Bàn:
Efft_d Loan_I Loan_Purp_Type_C Orig_LTV Curr_LTV Schd_LTV Un_drwn_Bal_a Btch_Time Strm_I Btch_Ins_I
2014-05-31 200312500 HL03 NULL 1.0000 1.0000 1.0000 2014-06-17 11:10:57.330 1005 24851e0a-53983699-14b4-69109
Select * from helios.dbo.CBA_SRD_Loan where Loan_I in ('200312500') and convert(date, Btch_Time) = '2014-06-17'
Trong PLSQL bạn có thể sử dụng
to_char(SYSDATE,'dd/mm/yyyy')
Đầu tiên Chuyển đổi ngày thành float (hiển thị số), sau đó ROUND
là số thập phân thành 0 dấu thập phân, sau đó chuyển đổi đó thành datetime.
convert(datetime,round(convert(float,orderdate,101),0) ,101)