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.