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())
James
sumber
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())
yogi
sumber
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)
Chris
sumber
33

Untuk mengurangi satu hari dari tanggal hari ini:

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

(postingan asli digunakan -7 dan salah)

FoxDeploy
sumber
24

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

SELECT GETDATE() - 1

2016-12-25 15:24:50.403
Philip Rego
sumber
6

Ini seharusnya berhasil.

select DATEADD(day, -1, convert(date, GETDATE()))
samithagun
sumber
1
SELECT DATEDIFF (
    DAY, 
    DATEDIFF(DAY, @CreatedDate, -1), 
    GETDATE())
Daniel Imms
sumber
1

Coba ini, semoga ini membantu Anda

SELECT DATEDIFF(DAY, DATEADD(DAY,-1,'2013-03-13 00:00:00.000') , GETDATE())
Vijay Singh Rana
sumber
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.

lembut hati5
sumber
-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.

chintan
sumber
2
SQL Server. Tidak mendukung INTERVALatau DATE_SUB.
Damien_The_Unbeliever
PILIH DATEADD (hari, 45, OrderDate) DARI Pesanan. Anda paham?
chintan