2010-04-13 3 views

Répondre

8

Si vous utilisez SQL Server 2008, il y a maintenant une date datatype. Fait beaucoup plus naturel!

SELECT CONVERT(Date, GETDATE()) 
+0

ok réponse est: sélectionnez creation_date de WEB_RISK_RISK où CREATION_DATE = convertir (date, GETDATE()) - merci pour le conseil. – thegunner

0

ici:

SELECT creation_date 
FROM risks 
WHERE creation_date = GETDATE() 

Ceci renverra toutes les valeurs creation_date stockées dans la table risks qui sont exactement les mêmes que ce qui est retourné par la fonction GETDATE(). Je suppose que le type de données de creation_date est Date.

+0

mais cela ne renverra pas les valeurs creation_date qui sont la date d'aujourd'hui. N'est-ce pas ce qui est fait witn creation_date = getdate() – thegunner

+0

@thegunner - Vous ne l'avez pas spécifié dans votre question. J'étais supposé deviner? – Oded

0

Vous avez juste besoin d'inclure creation_date dans votre clause select comme ceci:

select id, creation_date from risks where creation_date = getdate() 
+0

l'a essayé ne fonctionne pas .... doit convertir quelque part sélectionnez creation_date de WEB_RISK_RISK où CREATION_DATE = GETDATE(). p.s. il y a un disque qui a été enregistré aujourd'hui. – thegunner

1

Si j'ai bien compris votre question,

select convert(varchar, creation_date , 103) as creation_date from tablename

Regardez CAST and CONVERT

3

il est appelé "flooring a datetime", faites comme ça pour enlever juste le temps (c'est la méthode la plus rapide, plus rapide que d'utiliser C Onvert() ou CAST() mise en forme piquent):

DECLARE @datetime datetime; 
SET @datetime = '2008-09-17 12:56:53.430'; 
SELECT DATEADD(day,DATEDIFF(day,0,@datetime),0) 

SORTIE:

----------------------- 
2008-09-17 00:00:00.000 

(1 row(s) affected) 

voici comment faire pour d'autres parties d'un datetime:

--Floor a datetime 
DECLARE @datetime datetime; 
SET @datetime = '2008-09-17 12:56:53.430'; 

SELECT '0 None', @datetime                 -- none 2008-09-17 12:56:53.430 
UNION SELECT '1 Second',DATEADD(second,DATEDIFF(second,'2000-01-01',@datetime),'2000-01-01') -- Second: 2008-09-17 12:56:53.000 
UNION SELECT '2 Minute',DATEADD(minute,DATEDIFF(minute,0,@datetime),0)      -- Minute: 2008-09-17 12:56:00.000 
UNION SELECT '3 Hour', DATEADD(hour,DATEDIFF(hour,0,@datetime),0)       -- Hour: 2008-09-17 12:00:00.000 
UNION SELECT '4 Day', DATEADD(day,DATEDIFF(day,0,@datetime),0)        -- Day: 2008-09-17 00:00:00.000 
UNION SELECT '5 Month', DATEADD(month,DATEDIFF(month,0,@datetime),0)       -- Month: 2008-09-01 00:00:00.000 
UNION SELECT '6 Year', DATEADD(year,DATEDIFF(year,0,@datetime),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,@datetime),0)-1,@datetime),DATEADD(day,DATEDIFF(day,0,@datetime),0)-1) -- Second: 2008-09-17 12:56:53.000 

SORTIE:

-------- ----------------------- 
0 None 2008-09-17 12:56:53.430 
1 Second 2008-09-17 12:56:53.000 
2 Minute 2008-09-17 12:56:00.000 
3 Hour 2008-09-17 12:00:00.000 
4 Day 2008-09-17 00:00:00.000 
5 Month 2008-09-01 00:00:00.000 
6 Year 2008-01-01 00:00:00.000 

(7 row(s) affected) 


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 
this always uses a date less than the given date, so there will be no arithmetic overflow 

-------- ----------------------- 
1 Second 2008-09-17 12:56:53.000 

(1 row(s) affected) 
0

Vous pouvez toujours utiliser le mois/jour/année fonctions de le retourner:

declare @date datetime 
set @date = '1/1/10 12:00 PM' 
select cast(month(@date) as varchar) + '/' + cast(day(@date) as varchar) + '/' + cast(year(@date) as varchar) as theDate 
Questions connexes