Kurangi satu hari dari tanggal waktu


102

Saya memiliki kueri untuk mengambil perbedaan tanggal antara 2 tanggal waktu sebagai:

SELECT DATEDIFF(DAY, @CreatedDate , GETDATE())

Ex :

SELECT DATEDIFF(DAY, '2013-03-13 00:00:00.000' , GETDATE())

Saya perlu memiliki kueri yang berfungsi seperti ini yang akan mengurangi satu hari dari hari pembuatan:

SELECT DATEDIFF(DAY, **@CreatedDate- 1** , GETDATE())

1
Mengapa tidak menambahkan 1 saja ke hasilnya?
— Damien_The_Unbeliever

Jika mengurangkan 1 dari hasil memberikan jawaban yang diinginkan, maka pertanyaan yang Anda ajukan tampaknya salah, karena mengurangkan dari hasil sama dengan menambahkan jumlah hari ke tanggal sebelumnya.
— Damien_The_Unbeliever

Maka ekspresi yang Anda posting sebagai balasan pertama Anda kepada saya adalah yang akan saya gunakan - Anda dapat mempostingnya sebagai jawaban, tetapi seperti yang saya katakan, itu berarti pertanyaan Anda tidak benar-benar benar ( DATEDIFFantara 2003-03-12dan hari ini adalah 14 , bukan 12).
— Damien_The_Unbeliever

Ya..kamu benar..itu berkebalikan dengan hasil ..
— James

Jawaban:


124

Coba ini

SELECT DATEDIFF(DAY,  DATEADD(day, -1, '2013-03-13 00:00:00.000'), GETDATE())

ATAU

SELECT DATEDIFF(DAY,  DATEADD(day, -1, @CreatedDate), GETDATE())

3
Mengikuti jawaban dari Philip Rego, Anda dapat menggunakan SELECT GETDATE () - 1 untuk mengurangi hari dari tanggal.
— José Barbosa

44

Saya tidak yakin tentang apa yang sebenarnya Anda coba lakukan, tetapi saya pikir fungsi SQL ini akan membantu Anda:

SELECT DATEADD(day,-1,'2013-04-01 16:25:00.250')

Di atas akan memberi Anda 2013-03-31 16:25:00.250.

Ini membawa Anda kembali tepat satu hari dan berfungsi pada format tanggal-waktu atau tanggal standar.

Coba jalankan perintah ini dan lihat apakah itu memberi Anda apa yang Anda cari:

SELECT DATEADD(day,-1,@CreatedDate)

33

Untuk mengurangi satu hari dari tanggal hari ini:

Select DATEADD(day,-1,GETDATE())

(postingan asli digunakan -7 dan salah)


24

Rupanya Anda bisa mengurangi jumlah hari yang Anda inginkan dari sebuah datetime.

SELECT GETDATE() - 1

2016-12-25 15:24:50.403

6

Ini seharusnya berhasil.

select DATEADD(day, -1, convert(date, GETDATE()))


1

Coba ini, semoga ini membantu Anda

SELECT DATEDIFF(DAY, DATEADD(DAY,-1,'2013-03-13 00:00:00.000') , GETDATE())

1

Sejujurnya saya hanya menggunakan:

select convert(nvarchar(max), GETDATE(), 112)

yang memberi YYYYMMDDdan minus satu darinya.

Atau lebih tepatnya

select convert(nvarchar(max), GETDATE(), 112) - 1 

untuk tanggal kemarin.

Gantikan Getdate()dengan nilai AndaOrderDate

select convert(nvarchar (max),OrderDate,112)-1 AS SubtractDate FROM Orders

harus melakukannya.


-1

Anda bisa mencobanya.

Stempel waktu = 2008-11-11 13: 23: 44.657;

SELECT DATE_SUB(OrderDate,INTERVAL 1 DAY) AS SubtractDate FROM Orders

keluaran: 2008-11-10 13: 23: 44.657

Saya harap, ini akan membantu menyelesaikan masalah Anda.


2
SQL Server. Tidak mendukung INTERVALatau DATE_SUB.
— Damien_The_Unbeliever

PILIH DATEADD (hari, 45, OrderDate) DARI Pesanan. Anda paham?
— chintan
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.