SQL Server tarihleri

Klasik ASP ve SQL Server 2012 kullanıyorum. now() kullanarak veritabanına giriş yapan bir programım var. Başlangıçta, formnatdatetime (şimdi (), 2) idi.

Çoğu zaman her şey iyiydi ama bir sebepten ötürü (bu yüzden soruyorum) bazen veritabanına tarihi yanlış formatta koyardı. Yani ddmmyyyy yerine mmddyyyy olur.

Kodun aynı, nasıl ve neden aynı olduğunu göremiyorum, veritabanı aynı. TSQL'de now() veya getdate() varsayımları sunucuya özeldir.

0
Veritabanındaki tarih/saat değerlerini dizeleri kullanarak saklama. Yerel tarih/saat biçimlerini kullanın. GETDATE() , "sunucuya özgü" değildir. Bir datetime değeri döndürür.
katma yazar Gordon Linoff, kaynak
@Lankymart. . . Mevcut zaman istenirse, OP sadece veritabanında getdate() kullanabilir. Telleri kullanmak için ara sonuçlara veya nihai sonuçlara gerek yoktur.
katma yazar Gordon Linoff, kaynak
@Lankymart. . . Mevcut zaman istenirse, OP sadece veritabanında getdate() kullanabilir. Telleri kullanmak için ara sonuçlara veya nihai sonuçlara gerek yoktur.
katma yazar Gordon Linoff, kaynak
@Lankymart. . . Mevcut zaman istenirse, OP sadece veritabanında getdate() kullanabilir. Telleri kullanmak için ara sonuçlara veya nihai sonuçlara gerek yoktur.
katma yazar Gordon Linoff, kaynak
@Lankymart. . . Mevcut zaman istenirse, OP sadece veritabanında getdate() kullanabilir. Telleri kullanmak için ara sonuçlara veya nihai sonuçlara gerek yoktur.
katma yazar Gordon Linoff, kaynak
@GordonLinoff Gerçekten de (şu anki datetime için) fakat asıl konu Now() çıktısını DATETIME 'a çevirmektir. > Hem siz hem de Maciej 'e dokunmayın.
katma yazar Lankymart, kaynak
@GordonLinoff Gerçekten de (şu anki datetime için) fakat asıl konu Now() çıktısını DATETIME 'a çevirmektir. > Hem siz hem de Maciej 'e dokunmayın.
katma yazar Lankymart, kaynak
@GordonLinoff Gerçekten de (şu anki datetime için) fakat asıl konu Now() çıktısını DATETIME 'a çevirmektir. > Hem siz hem de Maciej 'e dokunmayın.
katma yazar Lankymart, kaynak
@GordonLinoff Gerçekten de (şu anki datetime için) fakat asıl konu Now() çıktısını DATETIME 'a çevirmektir. > Hem siz hem de Maciej 'e dokunmayın.
katma yazar Lankymart, kaynak
@GordonLinoff Giriş formatının, SQL Server'ın DATETIME 'e ne zaman döküm yaparken en iyi tahminde bulunacağı sorun olduğu noktasını kaçırıyorsunuz. Bunu önlemek için basit bir yoldur. dd-mmm-yyyy , SQL Server'ın gün ve ay arasında karıştırılmaması anlamına gelir. OP, herhangi bir noktada, verilerinizde bir varsayım olan VARCHAR olarak veritabanında saklandığını önermez.
katma yazar Lankymart, kaynak
@GordonLinoff Giriş formatının, SQL Server'ın DATETIME 'e ne zaman döküm yaparken en iyi tahminde bulunacağı sorun olduğu noktasını kaçırıyorsunuz. Bunu önlemek için basit bir yoldur. dd-mmm-yyyy , SQL Server'ın gün ve ay arasında karıştırılmaması anlamına gelir. OP, herhangi bir noktada, verilerinizde bir varsayım olan VARCHAR olarak veritabanında saklandığını önermez.
katma yazar Lankymart, kaynak
@GordonLinoff Giriş formatının, SQL Server'ın DATETIME 'e ne zaman döküm yaparken en iyi tahminde bulunacağı sorun olduğu noktasını kaçırıyorsunuz. Bunu önlemek için basit bir yoldur. dd-mmm-yyyy , SQL Server'ın gün ve ay arasında karıştırılmaması anlamına gelir. OP, herhangi bir noktada, verilerinizde bir varsayım olan VARCHAR olarak veritabanında saklandığını önermez.
katma yazar Lankymart, kaynak
@GordonLinoff Giriş formatının, SQL Server'ın DATETIME 'e ne zaman döküm yaparken en iyi tahminde bulunacağı sorun olduğu noktasını kaçırıyorsunuz. Bunu önlemek için basit bir yoldur. dd-mmm-yyyy , SQL Server'ın gün ve ay arasında karıştırılmaması anlamına gelir. OP, herhangi bir noktada, verilerinizde bir varsayım olan VARCHAR olarak veritabanında saklandığını önermez.
katma yazar Lankymart, kaynak

8 cevap

MS SQL Server 2012 ŞİMDİ() işlevini bilmiyor! Gordon Linoff'un bahsettiği gibi, bunun yerine GETDATE() kullanmanız gerekir!

I'd suggest to read this: Date and Time Data Types and Functions (Transact-SQL) together with: CAST and CONVERT (Transact-SQL)

SELECT CONVERT(VARCHAR(30), GETDATE(), 103) AS CustomDateFormat
-- returns: dd/mm/yyyy

Bazen sql sunucusunun dize olarak saklanan tarihi dönüştüremediğini unutmayın, bu nedenle SET DATEFORMAT :

SET DATEFORMAT dmy;
SELECT CONVERT(VARCHAR(30), '11/04/2015', 121) AS NewDateTime
0
katma
Burada insanlar tarafından yapılan varsayımlar rahatsız edici, şimdi birden fazla kez belirttiğim gibi Now() kullanılmasına veya başka bir datetime biçimlendirme işlevine (örneğin ) (SQL) bakılmaksızın yayınlanıyor. Sunucunun bunu bilmesi gerekmiyor, sadece CAST için geçerli bir DATETIME ) yapabilmeli. SET DATEFORMAT dmy; , datetime dosyasının yanlış bir şekilde yazılmasıyla ilgili bir yaklaşımdır, ancak SQL Server'ın dd-mmm-yyyy gibi karıştırılamayacağı bir biçimde iletilir. çünkü ay kısaltması gün olarak yanlış anlaşılmayabilir.
katma yazar Lankymart, kaynak

MS SQL Server 2012 ŞİMDİ() işlevini bilmiyor! Gordon Linoff'un bahsettiği gibi, bunun yerine GETDATE() kullanmanız gerekir!

I'd suggest to read this: Date and Time Data Types and Functions (Transact-SQL) together with: CAST and CONVERT (Transact-SQL)

SELECT CONVERT(VARCHAR(30), GETDATE(), 103) AS CustomDateFormat
-- returns: dd/mm/yyyy

Bazen sql sunucusunun dize olarak saklanan tarihi dönüştüremediğini unutmayın, bu nedenle SET DATEFORMAT :

SET DATEFORMAT dmy;
SELECT CONVERT(VARCHAR(30), '11/04/2015', 121) AS NewDateTime
0
katma
Burada insanlar tarafından yapılan varsayımlar rahatsız edici, şimdi birden fazla kez belirttiğim gibi Now() kullanılmasına veya başka bir datetime biçimlendirme işlevine (örneğin ) (SQL) bakılmaksızın yayınlanıyor. Sunucunun bunu bilmesi gerekmiyor, sadece CAST için geçerli bir DATETIME ) yapabilmeli. SET DATEFORMAT dmy; , datetime dosyasının yanlış bir şekilde yazılmasıyla ilgili bir yaklaşımdır, ancak SQL Server'ın dd-mmm-yyyy gibi karıştırılamayacağı bir biçimde iletilir. çünkü ay kısaltması gün olarak yanlış anlaşılmayabilir.
katma yazar Lankymart, kaynak

MS SQL Server 2012 ŞİMDİ() işlevini bilmiyor! Gordon Linoff'un bahsettiği gibi, bunun yerine GETDATE() kullanmanız gerekir!

I'd suggest to read this: Date and Time Data Types and Functions (Transact-SQL) together with: CAST and CONVERT (Transact-SQL)

SELECT CONVERT(VARCHAR(30), GETDATE(), 103) AS CustomDateFormat
-- returns: dd/mm/yyyy

Bazen sql sunucusunun dize olarak saklanan tarihi dönüştüremediğini unutmayın, bu nedenle SET DATEFORMAT :

SET DATEFORMAT dmy;
SELECT CONVERT(VARCHAR(30), '11/04/2015', 121) AS NewDateTime
0
katma
Burada insanlar tarafından yapılan varsayımlar rahatsız edici, şimdi birden fazla kez belirttiğim gibi Now() kullanılmasına veya başka bir datetime biçimlendirme işlevine (örneğin ) (SQL) bakılmaksızın yayınlanıyor. Sunucunun bunu bilmesi gerekmiyor, sadece CAST için geçerli bir DATETIME ) yapabilmeli. SET DATEFORMAT dmy; , datetime dosyasının yanlış bir şekilde yazılmasıyla ilgili bir yaklaşımdır, ancak SQL Server'ın dd-mmm-yyyy gibi karıştırılamayacağı bir biçimde iletilir. çünkü ay kısaltması gün olarak yanlış anlaşılmayabilir.
katma yazar Lankymart, kaynak

MS SQL Server 2012 ŞİMDİ() işlevini bilmiyor! Gordon Linoff'un bahsettiği gibi, bunun yerine GETDATE() kullanmanız gerekir!

I'd suggest to read this: Date and Time Data Types and Functions (Transact-SQL) together with: CAST and CONVERT (Transact-SQL)

SELECT CONVERT(VARCHAR(30), GETDATE(), 103) AS CustomDateFormat
-- returns: dd/mm/yyyy

Bazen sql sunucusunun dize olarak saklanan tarihi dönüştüremediğini unutmayın, bu nedenle SET DATEFORMAT :

SET DATEFORMAT dmy;
SELECT CONVERT(VARCHAR(30), '11/04/2015', 121) AS NewDateTime
0
katma
Burada insanlar tarafından yapılan varsayımlar rahatsız edici, şimdi birden fazla kez belirttiğim gibi Now() kullanılmasına veya başka bir datetime biçimlendirme işlevine (örneğin ) (SQL) bakılmaksızın yayınlanıyor. Sunucunun bunu bilmesi gerekmiyor, sadece CAST için geçerli bir DATETIME ) yapabilmeli. SET DATEFORMAT dmy; , datetime dosyasının yanlış bir şekilde yazılmasıyla ilgili bir yaklaşımdır, ancak SQL Server'ın dd-mmm-yyyy gibi karıştırılamayacağı bir biçimde iletilir. çünkü ay kısaltması gün olarak yanlış anlaşılmayabilir.
katma yazar Lankymart, kaynak

Biçim işlevini kullanabilirsiniz

SELECT FORMAT(GETDATE(),'ddMMyyyy')

Sonuçlar:

11042015
0
katma

Biçim işlevini kullanabilirsiniz

SELECT FORMAT(GETDATE(),'ddMMyyyy')

Sonuçlar:

11042015
0
katma

Biçim işlevini kullanabilirsiniz

SELECT FORMAT(GETDATE(),'ddMMyyyy')

Sonuçlar:

11042015
0
katma

Biçim işlevini kullanabilirsiniz

SELECT FORMAT(GETDATE(),'ddMMyyyy')

Sonuçlar:

11042015
0
katma