Ketika saya memilih tanggal dalam SQL itu dikembalikan sebagai 2011-02-25 21:17:33.933
. Tetapi saya hanya perlu bagian Date, yaitu 2011-02-25
. Bagaimana saya bisa melakukan ini?
Ketika saya memilih tanggal dalam SQL itu dikembalikan sebagai 2011-02-25 21:17:33.933
. Tetapi saya hanya perlu bagian Date, yaitu 2011-02-25
. Bagaimana saya bisa melakukan ini?
Jawaban:
Saya kira dia ingin string.
select convert(varchar(10), '2011-02-25 21:17:33.933', 120)
120 disini menceritakan mengkonversi fungsi yang kita melewati tanggal masukan dalam format berikut : yyyy-mm-dd hh:mi:ss
.
Untuk SQL Server 2008:
Convert(date, getdate())
Silakan merujuk ke https://docs.microsoft.com/en-us/sql/t-sql/functions/getdate-transact-sql
DATE
baru pada tahun 2008.
date
data karena itu menganggap solusi ini tidak valid.
Yang tercepat adalah datediff
, mis
select dateadd(d, datediff(d,0, [datecolumn]), 0), other..
from tbl
Tetapi jika Anda hanya perlu menggunakan nilainya, maka Anda dapat melewatkan dateadd, mis
select ...
WHERE somedate <= datediff(d, 0, getdate())
di mana ekspresi datediff(d, 0, getdate())
cukup untuk mengembalikan tanggal hari ini tanpa porsi waktu.
Gunakan CAST (GETDATE () sebagai tanggal) yang bekerja untuk saya, sederhana.
CAST(order_date AS DATE)
CAST(
FLOOR(
CAST( GETDATE() AS FLOAT )
)
AS DATETIME
)
Untuk versi 2008 yang lebih lama :
SELECT DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE()), 0)
Agak terlambat, tetapi gunakan fungsi ODBC "curdate" (angle brack 'fn' adalah urutan fungsi escape ODBC).
SELECT {fn curdate()}
Keluaran: 2013-02-01
SELECT {fn curdate()} FROM (SELECT 1) AS T(X)
dan melihat pada rencana eksekusi aktual (versi xml), Anda akan melihat bahwa apa yang sebenarnya dieksekusi adalah CONVERT(varchar(10),getdate(),23)
. Jadi tipe data dari fungsi ODBC ini adalah varchar(10)
yang berarti bahwa jika Anda ingin membandingkan hasilnya dengan datetime
Anda, Anda akan mendapatkan konversi implisit dari varchar(10)
menjadi datetime
pada sebuah string yyyy-mm-dd
. Konversi tersirat itu akan gagal set dateformat dmy
.
Anda dapat mencoba yang ini juga.
SELECT CONVERT(DATE, GETDATE(), 120)
Jika Anda membutuhkan waktu untuk menjadi nol seperti 2018-01-17 00:00:00.000
:
SELECT CONVERT(DATETIME, CONVERT(DATE, GETDATE()), 121)
Gunakan sederhana:
convert(date, Btch_Time)
Contoh di bawah ini:
Meja:
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'
Sudah terlambat tetapi mengikuti bekerja untuk saya dengan baik
declare @vCurrentDate date=getutcdate()
select @vCurrentDate
Ketika tipe data adalah tanggal, jam akan terpotong
Di PLSQL Anda bisa menggunakan
to_char(SYSDATE,'dd/mm/yyyy')
Pertama-tama Konversikan tanggal menjadi mengambang (yang menampilkan angka), lalu ROUND
angka menjadi 0 angka desimal, lalu konversikan ke datetime.
convert(datetime,round(convert(float,orderdate,101),0) ,101)
Coba ini.
SELECT DATEADD(DD, 0, DATEDIFF(DD, 0, GETDATE()))