Saya terkejut karena tidak dapat menemukan pertanyaan ini di sini.
Saya memiliki tanggal waktu var dan saya ingin mengubahnya menjadi string sehingga saya dapat menambahkannya ke string lain. Saya menginginkannya dalam format yang dapat diubah dengan mudah kembali ke waktu tanggal.
Bagaimana saya bisa melakukan ini?
(Saya ingin bagian tanggal dan bagian waktu.)
sql-server
tsql
cja
sumber
sumber
Convert
, klik dua kali untuk menyorot, tekan Shift + F1 ... selalu menjadi garis pertahanan pertama.Jawaban:
Kueri berikut akan mendapatkan tanggal waktu saat ini dan mengubahnya menjadi string. dengan format sebagai berikut
yyyy-mm-dd hh:mm:ss(24h)
SELECT convert(varchar(25), getdate(), 120)
sumber
DateTimeOffSet
, pastikan untuk menyesuaikanvarchar
panjangnya dengan hasil yang Anda inginkan. Bagi saya, saya tidak menginginkan zona waktu jadi saya harus menggunakanSELECT convert(varchar(19), sysdatetimeoffset(), 120)
Ada banyak cara yang berbeda untuk
convert
sebuahdatetime
ke string. Inilah salah satu caranya:SELECT convert(varchar(25), getdate(), 121) – yyyy-mm-dd hh:mm:ss.mmm
Lihat Demo
Berikut adalah situs web yang memiliki daftar semua konversi:
Cara memformat tanggal & waktu di SQL Server
sumber
Anda dapat menggunakan
convert
pernyataan di Microsoft SQL Server untuk mengonversi tanggal menjadi string. Contoh sintaks yang digunakan adalah:SELECT convert(varchar(20), getdate(), 120)
Di atas akan mengembalikan tanggal dan waktu sekarang dalam sebuah string dengan format dalam format
YYYY-MM-DD HH:MM:SS
24 jam.Anda dapat mengubah nomor di akhir pernyataan menjadi salah satu dari banyak nomor yang akan mengubah format string yang dikembalikan. Daftar kode ini dapat ditemukan di MSDN di bagian referensi CAST dan CONVERT .
sumber
Ada 3 metode berbeda tergantung pada apa yang saya butuhkan dan versi mana yang saya gunakan.
Berikut metodenya ..
1) Menggunakan Convert
DECLARE @DateTime DATETIME = GETDATE(); --Using Convert SELECT CONVERT(NVARCHAR, @DateTime,120) AS 'myDateTime' ,CONVERT(NVARCHAR(10), @DateTime, 120) AS 'myDate' ,RIGHT(CONVERT(NVARCHAR, @DateTime, 120),8) AS 'myTime'
2) Menggunakan Cast (SQL Server 2008 dan seterusnya)
SELECT CAST(@DateTime AS DATETIME2) AS 'myDateTime' ,CAST(@DateTime AS DATETIME2(3)) AS 'myDateTimeWithPrecision' ,CAST(@DateTime AS DATE) AS 'myDate' ,CAST(@DateTime AS TIME) AS 'myTime' ,CAST(@DateTime AS TIME(3)) AS 'myTimeWithPrecision'
3) Menggunakan tipe data karakter panjang tetap
DECLARE @myDateTime NVARCHAR(20) = CONVERT(NVARCHAR, @DateTime, 120); DECLARE @myDate NVARCHAR(10) = CONVERT(NVARCHAR, @DateTime, 120); SELECT @myDateTime AS 'myDateTime' ,@myDate AS 'myDate'
sumber
Selain fungsi
CAST
danCONVERT
di jawaban sebelumnya, jika Anda menggunakan SQL Server 2012 dan di atasnya, Anda menggunakan fungsi FORMAT untuk mengonversiDATETIME
tipe berbasis menjadi string.Untuk mengonversi kembali, gunakan kebalikan
PARSE
atauTRYPARSE
fungsi.Gaya pemformatan didasarkan pada .NET (mirip dengan opsi pemformatan string metode ToString ()) dan memiliki keuntungan karena sadar budaya. misalnya.
DECLARE @DateTime DATETIME2 = SYSDATETIME(); DECLARE @StringResult1 NVARCHAR(100) = FORMAT(@DateTime, 'g') --without culture DECLARE @StringResult2 NVARCHAR(100) = FORMAT(@DateTime, 'g', 'en-gb') SELECT @DateTime SELECT @StringResult1, @StringResult2 SELECT PARSE(@StringResult1 AS DATETIME2) SELECT PARSE(@StringResult2 AS DATETIME2 USING 'en-gb')
Hasil:
sumber
The format argument must contain a valid .NET Framework format string, either as a standard format string (for example, "C" or "D"), or as a pattern of custom characters for dates and numeric values (for example, "MMMM DD, yyyy (dddd)")
Use the FORMAT function for locale-aware formatting of date/time and number values as strings. For general data type conversions, use CAST or CONVERT.
Periksa sintaks CAST dan CONVERT dari t-sql:
http://msdn.microsoft.com/en-us/library/ms187928.aspx
sumber
SELECT CONVERT(varchar, @datetime, 103) --for UK Date format 'DD/MM/YYYY'
101 - AS - MM / DD / YYYY
108 - Waktu - HH: MI: SS
112 - Tanggal - YYYYMMDD
121 - ODBC - TTTT-BB-HH JJ: MI: SS.FFF
20 - ODBC - TTTT-BB-HH JJ: MI: SS
sumber
Ini telah dijawab oleh banyak orang, tetapi saya merasa solusi paling sederhana telah ditinggalkan.
SQL SERVER (saya percaya 2012+) memiliki persamaan string implisit untuk DATETIME2 seperti yang ditunjukkan di sini
Lihat bagian "Format literal string yang didukung untuk datetime2"
Untuk menjawab pertanyaan OP secara eksplisit:
DECLARE @myVar NCHAR(32) DECLARE @myDt DATETIME2 SELECT @myVar = @GETDATE() SELECT @myDt = @myVar PRINT(@myVar) PRINT(@myDt)
keluaran:
Catatan: Variabel pertama (
myVar
) sebenarnya memegang nilai'2019-01-23 12:24:00.0000000'
juga. Itu baru saja diformatJan 23 2019 12:24PM
karena set pemformatan default untuk SQL SERVER yang dipanggil saat Anda menggunakanPRINT
. Jangan tersandung di sini karena itu, string sebenarnya di(myVer)
='2019-01-23 12:24:00.0000000'
sumber
Coba di bawah ini:
DECLARE @myDateTime DATETIME SET @myDateTime = '2013-02-02' -- Convert to string now SELECT LEFT(CONVERT(VARCHAR, @myDateTime, 120), 10)
sumber