81 messaggi dal 03 giugno 2001
Ciao a tutti ho questa seelct che il suo lavoro

SELECT distinct CAST(DAY([Inizio]) AS VARCHAR(2)) + ' ' + DATENAME(MM, [Inizio]) + ' ' + CAST(YEAR([Inizio]) AS VARCHAR(4)) AS [data], [Inizio] FROM dbo.[Programma Scientifico] order by [Inizio]

ma non tanto.... :)
nel senso mettendo il distinct vorrei prendere solo le date una volta sola....

ma questo è il risultato...

data ------------------ Inizio
5 aprile 2008 --------- 2008-04-05 09:00:00.000
5 aprile 2008 --------- 2008-04-05 09:30:00.000
5 aprile 2008 --------- 2008-04-05 10:00:00.000
5 aprile 2008 --------- 2008-04-05 10:30:00.000
5 aprile 2008 --------- 2008-04-05 11:30:00.000
5 aprile 2008 --------- 2008-04-05 12:30:00.000
4 maggio 2008 --------- 2008-05-04 12:00:00.000
12 maggio 2008 --------- 2008-05-12 10:22:00.000


in realta quelllo che serve a me è solo il campo data ordinato in questo modo...

5 aprile 2008
4 maggio 2008
12 maggio 2008

ma proprio non ci riesco.. qualche consiglio.

Ciao a tutti
Giuseppe.
Modificato da girub il 10 settembre 2008 13.18 -




Modificato da girub il 10 settembre 2008 13.21 -

------------------------------------
"Nella vita non si è mai fermi o si va avanti o... si va indietro"
1.976 messaggi dal 27 luglio 2005
Contributi
salve,
girub wrote:
Ciao a tutti ho questa seelct che il suo lavoro

SELECT distinct CAST(DAY([Inizio]) AS VARCHAR(2)) + ' ' + DATENAME(MM, [Inizio]) + ' ' + CAST(YEAR([Inizio]) AS VARCHAR(4)) AS [data], [Inizio] FROM dbo.[Programma Scientifico] order by [Inizio]
ma non tanto....
nel senso mettendo il distinct vorrei prendere solo le date una volta sola....

ma questo è il risultato...

data ----------------
Inizio
5 aprile 2008 -------
2008-04-05 09 0 0.000
5 aprile 2008 -------
2008-04-05 09:30 0.000
5 aprile 2008 -------
2008-04-05 10 0 0.000
5 aprile 2008 -------
2008-04-05 10:30 0.000
5 aprile 2008 -------
2008-04-05 11:30 0.000
5 aprile 2008 -------
2008-04-05 12:30 0.000
4 maggio 2008 -------
2008-05-04 12 0 0.000
12 maggio 2008 -------
2008-05-12 10:22 0.000

in realta quelllo che serve a me è solo il campo data ordinato in questo modo...

5 aprile 2008
4 maggio 2008
12 maggio 2008


il distinct corrisponde in effetti ad un group by, eseguito per tutte le colonne proiettate dalla select list.. visto che il datetime che utilizzi ha anche la parte "temporale" valorizzata oltre alla parte data, devi "troncare" la parte temporale in modo che sia "00 0 0.000" per tutti, cosi' che poi il raggruppamento restituisca il risultato corretto.. riguardo al risultato finale, che utilizza i "nomi" dei mesi, sono poco propenso ad una localizzazione italiana dello stesso, visto che cio' in effetti dipende strettamente dalle impostazioni di linguaggio della login attiva.. se altra login avesse, ad esempio, la lingua inglese come lingua utilizzata, ovviamente non avrai come risultato "aprile" bensi' "april" o altro..
puoi pero' quindi "giocare" con le funzioni data in modo da raggruppare per la sola parte data della colonna a te interessante, similarmente a SET NOCOUNT ON;
USE tempdb;
GO
CREATE TABLE dbo.t (
dt datetime NOT NULL
);
GO
INSERT INTO dbo.t VALUES ( '2008-04-05 09 0 0.000' );
INSERT INTO dbo.t VALUES ( '2008-04-05 09:30 0.000' );
INSERT INTO dbo.t VALUES ( '2008-04-05 10 0 0.000' );
INSERT INTO dbo.t VALUES ( '2008-04-05 10:30 0.000' );
INSERT INTO dbo.t VALUES ( '2008-04-06 10:30 0.000' );
INSERT INTO dbo.t VALUES ( '2008-04-06 10:31 0.000' );
INSERT INTO dbo.t VALUES ( '2008-04-07 10:30 0.000' );
INSERT INTO dbo.t VALUES ( '2008-04-07 11 0 0.000' );
GO
SELECT DISTINCT CONVERT(varchar, CONVERT(datetime, CONVERT(varchar( , dt, 112)),107)
FROM dbo.t;

SELECT DISTINCT CAST(DAY([dt]) AS VARCHAR(2)) + ' ' + DATENAME(MM, [dt]) + ' ' + CAST(YEAR([dt]) AS VARCHAR(4)) AS [data]
FROM dbo.t;

GO
DROP TABLE dbo.t;
--<--------

------------------------------
Apr 05, 2008
Apr 06, 2008
Apr 07, 2008

data
--------------------------------------
5 April 2008
6 April 2008
7 April 2008

saluti

Andrea Montanari
http://www.hotelsole.com - http://www.hotelsole.com/asql/index.php
81 messaggi dal 03 giugno 2001
Grazie Andrea,
grazie della tua dritta.. ma senza appensantire il tutto....
forse alla fine mi conviene fare il controllo via codice...

ma ne approfitto per chiedere anche come mai sul front-end si sql management studio mi tira fuori il giorno in italiano mentre facendo la quesry con php mi tira fuori il giorno in inglese (5 APRIL 2008)
una semplice query mi sta facendo perdere un sacco di tempo........

------------------------------------
"Nella vita non si è mai fermi o si va avanti o... si va indietro"
1.976 messaggi dal 27 luglio 2005
Contributi
salve,
girub wrote:
ma ne approfitto per chiedere anche come mai sul front-end si sql management studio mi tira fuori il giorno in italiano mentre facendo la quesry con php mi tira fuori il giorno in inglese (5 APRIL 200 una semplice query mi sta facendo perdere un sacco di tempo........

appunto.. dipende dalla lingua impostata per la login connessa che esegue il comando.. se le login non coincidono, e' possibile che abbiano impostazioni "diverse"..
saluti

Andrea Montanari
http://www.hotelsole.com - http://www.hotelsole.com/asql/index.php

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.