Как получить формат DateTime - PullRequest
0 голосов
/ 04 февраля 2011

На сервере SQL, как я могу получить текущую дату, но время 12:00.С помощью GETDATE () я получаю текущую дату и время. Мне нужно, чтобы дата и время форматировались так:

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

Ответы [ 4 ]

3 голосов
/ 04 февраля 2011

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

--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
1 голос
/ 17 марта 2011

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

SELECT DATEADD(DAY,0,DATEDIFF(DAY,0,GETDATE()))
1 голос
/ 04 февраля 2011

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

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

1 голос
/ 04 февраля 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...