2011-02-04 6 views
0

В sql-сервере, как я могу получить текущую дату, но время 12:00 AM. С GETDATE() я получить текущую дату и time.I нужно иметь DateTime отформатированный как это:Как получить формат DateTime

2011-02-04 12:00 AM ИЛИ 2011-02-04 00:01

ответ

1

Отъезд CAST and CONVERT функции в T-SQL - они позволяют вам форматировать значения DATETIME различными способами.

3

Вы сначала должны знать, как получить нужное вам время. Это называется «полом» даты. посмотреть пример:

--Floor a datetime 

SELECT '0 None', GETDATE()                 -- none 2008-09-17 12:56:53.430 
UNION SELECT '1 Second',DATEADD(second,DATEDIFF(second,'2000-01-01',GETDATE()),'2000-01-01') -- Second: 2008-09-17 12:56:53.000 
UNION SELECT '2 Minute',DATEADD(minute,DATEDIFF(minute,0,GETDATE()),0)      -- Minute: 2008-09-17 12:56:00.000 
UNION SELECT '3 Hour', DATEADD(hour,DATEDIFF(hour,0,GETDATE()),0)       -- Hour: 2008-09-17 12:00:00.000 
UNION SELECT '4 Day', DATEADD(day,DATEDIFF(day,0,GETDATE()),0)        -- Day: 2008-09-17 00:00:00.000 
UNION SELECT '5 Month', DATEADD(month,DATEDIFF(month,0,GETDATE()),0)       -- Month: 2008-09-01 00:00:00.000 
UNION SELECT '6 Year', DATEADD(year,DATEDIFF(year,0,GETDATE()),0)       -- Year: 2008-01-01 00:00:00.000 
ORDER BY 1 
PRINT' ' 
PRINT 'Note that when you are flooring by the second, you will often get an arithmetic overflow if you use 0. So pick a known value that is guaranteed to be lower than the datetime you are attempting to floor' 
PRINT 'this always uses a date less than the given date, so there will be no arithmetic overflow' 
SELECT '1 Second',DATEADD(second,DATEDIFF(second,DATEADD(day,DATEDIFF(day,0,GETDATE()),0)-1,GETDATE()),DATEADD(day,DATEDIFF(day,0,GETDATE()),0)-1) -- Second: 2008-09-17 12:56:53.000 

раз вы пол это, используйте один из ароматов CONVERT(), чтобы отформатировать его, как вы хотели:

это делает формат, который вы хотите, но без изменения времени:

select CONVERT(char(10), GETDATE(), 121)+' '+LTRIM(RIGHT(CONVERT(varchar(30), GETDATE(), 100),7)) 

ВЫВОД:

------------------ 
2011-02-04 7:19AM 

форматировать и установить время на то, что вы хотите:

select CONVERT(char(10),DATEADD(day,DATEDIFF(day,0,GETDATE()),0), 121)+' '+LTRIM(RIGHT(CONVERT(varchar(30), DATEADD(day,DATEDIFF(day,0,GETDATE()),0), 100),7)) 

ВЫВОД:

------------------ 
2011-02-04 12:00AM 
+0

Спасибо очень много это произведения. – TheGodfather23

+1

вы также можете использовать что-то простое, например 'select CONVERT (char (10), GETDATE(), 121) + '00: 01'' –

1

Есть целый ряд Дата функций, которые можно использовать в SQL Server - см here.

Надеемся, это поможет!

1

Чтобы просто установить время до 12:00 AM, но сохранить даты и времени тип данных попробовать:

SELECT DATEADD(DAY,0,DATEDIFF(DAY,0,GETDATE())) 
Смежные вопросы