Tsql 如何格式化日期时间
在sql server中,如何获取当前日期但时间为上午12:00。 使用GETDATE()可以获取当前日期和时间。我需要将datetime格式化为以下格式:Tsql 如何格式化日期时间,tsql,Tsql,在sql server中,如何获取当前日期但时间为上午12:00。 使用GETDATE()可以获取当前日期和时间。我需要将datetime格式化为以下格式: 2011-02-04 12:00 AM或2011-02-04 00:01查看T-SQL中的函数-它们允许您以各种方式格式化日期时间值。查看T-SQL中的函数-它们允许您以各种方式格式化日期时间值。您首先需要知道如何获得所需的时间。它被称为“地板”日期时间。请参见此示例: --Floor a datetime SELECT '0 None'
2011-02-04 12:00 AM或2011-02-04 00:01查看T-SQL中的函数-它们允许您以各种方式格式化日期时间值。查看T-SQL中的函数-它们允许您以各种方式格式化日期时间值。您首先需要知道如何获得所需的时间。它被称为“地板”日期时间。请参见此示例:
--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
------------------
2011-02-04 12:00AM
要格式化并设置所需时间,请执行以下操作:
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 7:19AM
------------------
2011-02-04 12:00AM
你首先需要知道如何得到你想要的时间。它被称为“地板”日期时间。请参见此示例:
--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
------------------
2011-02-04 12:00AM
要格式化并设置所需时间,请执行以下操作:
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 7:19AM
------------------
2011-02-04 12:00AM
SQL Server中有许多日期函数可供使用-请参阅
希望这些会有帮助 SQL Server中有许多日期函数可供使用-请参阅
希望这些会有帮助 要简单地将时间设置为12:00 AM,但保持datetime数据类型,请尝试:
SELECT DATEADD(DAY,0,DATEDIFF(DAY,0,GETDATE()))
要简单地将时间设置为12:00 AM,但保持datetime数据类型,请尝试:
SELECT DATEADD(DAY,0,DATEDIFF(DAY,0,GETDATE()))
您还可以使用一些简单的方法,如
selectconvert(char(10),GETDATE(),121)+'00:01'
您还可以使用一些简单的方法,如selectconvert(char(10),GETDATE(),121)+'00:01'